関数の概要
mb_substr は、PHPでマルチバイト文字列の一部分を切り出すための関数です。特に日本語や中国語などの複数バイト文字を扱う際に便利で、文字化けを防ぎながら部分文字列を取得できます。
パラメータの説明
- string:対象の文字列(マルチバイト文字列)
- start:切り出しを開始する位置(0から始まるインデックス)
- length(省略可能):切り出す文字数。省略すると先頭から最後まで取得
- encoding(省略可能):文字エンコーディング。省略すると内部エンコーディングが使われる
戻り値
指定した位置から指定した長さ分の部分文字列を返します。もし指定の開始位置が文字列より長い場合は空文字列を返します。
使用例
基本的な使い方
<?php
$text = "こんにちは世界";
$result = mb_substr($text, 2, 3);
echo $result; // にちは
?>
この例では「こんにちは世界」の3文字目から3文字を切り出し、「にちは」が出力されます。
開始位置だけ指定する場合
<?php
$text = "おはようございます";
$result = mb_substr($text, 4);
echo $result; // うございます
?>
開始位置4文字目以降、文字数を指定しなければ末尾まで切り出せます。
エンコーディングを指定する場合
<?php
$text = "Привет мир"; // ロシア語
$result = mb_substr($text, 0, 6, "UTF-8");
echo $result; // Привет
?>
マルチバイト文字列でも、エンコーディングを指定すれば正確に切り出せます。
関連する関数
mb_strlen:マルチバイト文字列の長さを取得mb_strpos:マルチバイト文字列内の文字位置を検索mb_strtolower:マルチバイト文字列を小文字に変換mb_strtoupper:マルチバイト文字列を大文字に変換
まとめ
mb_substr は、マルチバイト文字列から安全に部分文字列を取り出すために使う関数です。特に日本語やその他多バイト言語を扱う場面で役立ちます。エンコーディングを指定することで、様々な文字コードに対応可能です。実務でもよく使われる関数なので、理解しておくと便利です。
