文字列の一部分を取得 - substr()、mb_substr()
当ページのリンクには広告が含まれています。
プログラミング言語PHPで、指定した文字列の一部分を取得する関数 substr()、マルチバイト版の mb_substr()を紹介します。
substr関数
string substr ( string $string , int $start [, int $length ] )
指定した文字列の一部分を取得します。
引数 $string 文字列を指定します。 $start 取得する文字列の開始位置(バイト数)を指定します。 文字列の1文字目から取得したい場合は、「0」を指定します。 $length 取得する文字数(バイト数)を指定します。
返り値
文字列の一部分を返します。
サンプルコード - 開始位置のみ指定
指定した文字列から一部分(指定した開始位置から文字列の最後まで)を取得するサンプルコードです。
substr( 文字列, 開始位置 )
<?php echo substr( "abcde", 1 ) . "\n"; echo substr( "abcde", 3 ) . "\n"; echo substr( "abcde", -2 ) . "\n"; echo substr( "いろはにほ", 3 ) . "\n"; ?>
実行結果です。指定した開始位置から文字列の最後までを取得します。指定した開始位置が負の場合は、開始位置を文字列の最後から数えます。文字列が日本語の場合、1文字が2バイトなので指定した開始位置と文字の位置が異なります。日本語の一部分を取得する場合は、マルチバイト版のmb_substr関数(後述)を使いましょう。
abc cde ろは
サンプルコード - 開始位置と文字数
指定した文字列から一部分(指定した開始位置から指定した文字数)を取得するサンプルコードです。
substr( 文字列, 開始位置, 文字数 )
<?php echo substr( "abcde", 1, 3 ) . "\n"; echo substr( "abcde", 2, 8 ) . "\n"; echo substr( "いろはにほ", 3, 6 ) . "\n"; ?>
実行結果です。指定した開始位置から指定した文字数を取得します。指定した文字数が文字列より大きい場合は、文字列の最後までを取得します。文字列が日本語の場合、1文字が2バイトなので指定した開始位置と文字の位置、文字数が異なります。日本語の一部分を取得する場合は、マルチバイト版のmb_substr関数(後述)を使いましょう。
bcde de de ろはにほ
mb_substr関数
string mb_substr ( string $string , int $start [, int $length [, string $encoding ]] ) 指定した文字列の一部分を取得します。 マルチバイトの文字数も正しく取得します。
引数 $string 文字列を指定します。 $start 取得する文字列の開始位置を指定します。 文字列の1文字目から取得したい場合は、「0」を指定します。 $length 取得する文字数を指定します。 $encoding エンコーディングを指定します。 日本語の場合、"UTF-8"、"EUC-JP"、"SJIS"を指定します。 エンコーディングの指定を省略した場合は、 内部エンコーディング†を使用します。
返り値
文字列の一部分を返します。
†内部エンコーディングの設定はこちら » 日本語環境の設定 - mbstring。
サンプルコード
指定した文字列から一部分(指定した開始位置から指定した文字数)を取得するサンプルコードです。
mb_substr( 文字列, 開始位置, 文字数, エンコーディング )
<?php echo mb_substr( "abcde", 0, 3 ) . "\n"; echo mb_substr( "いろはにほ", 1, 6, "UTF-8" ) . "\n"; echo mb_substr( "いろはにほ", 1, 6 ) . "\n"; ?>
実行結果です。指定した開始位置から指定した文字数を取得します。マルチバイトに対応しているので、適切に文字列の一部分が取得できていますね。エンコーディングの指定を省略した場合は、内部エンコーディングが使われます。
abc ろはに ろはに