今日の人気記事

  1. PHP + Apache 環境の構築
  2. HTML内でPHPスクリプトを実行 - 埋め込み
  3. PHPのダウンロードとインストール - Windows環境
  4. 外部コマンドを実行 - exec()、system()
  5. PHP + Apacheのインストール - Linux環境 - CentOS

文字列の一部分を取得 - 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
ろはに
ろはに
スポンサーリンク

関連記事(一部広告含む)