文字列の一部を抜き出す

 文字列の位置を指定して一部分の文字列を取得する方法を見てみましょう。次のような関数が用意されています。

substr関数

 バイト文字(半角文字)で構成される文字列の中から指定した位置の文字列を抜き出します。

関数名 substr
パラメーターリスト
パラメター名 説明
string $string 対象となる文字列
int $start 正の場合取り出す文字列の開始位置(先頭文字は0)
負の場合は最後から数えた開始位置
int $length 正の場合は取り出す文字列の長さ
負の場合は最後から指定分引いた文字の位置まで
省略した場合は最後まで
返り値
string 切り出した文字列、失敗した場合はFALSEか空文字列
substr関数の仕様

○ ファイル

 「PregReplaceTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 SubstrTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

SubstrTest.php

  1. <head>
  2. <meta charset="UTF-8">
  3. <title>文字列取出し</title>
  4. </head>
  5. <body>
  6. <?php
  7. //ターゲットとなる文字列を用意する
  8. $target = 'I like banana.';
  9. //文字列の一部を取得する
  10. $ret = substr($target, 7);
  11. print($ret);
  12. print('<hr>');
  13. $ret = substr($target, 7, 6);
  14. print($ret);
  15. print('<hr>');
  16. $ret = substr($target, 2, -8);
  17. print($ret);
  18. ?>
  19. </body>

○ 実行結果

実行結果
実行結果

○ 解説

 13行目で、「substr」関数を使用しています。第1引数にターゲットとなる文字列を指定しています。第2引数に「7」と指定しているので、0から始まる7番目の文字から最後の文字までが抜き出しされ、返ってきます。

 16行目のsubstr関数は、第2引数に「7」を、第3引数に「6」を指定しているため、0から始まる7番目の文字から6バイト(6文字)分切り出され、返ってきます。

 19行目のsubstr関数は、第2引数に「2」を、第3引数に「-8」を指定しているため、0から始まる2番目の文字から、最後の文字から数えて8バイト(8文字)分の位置まで切り出され、返ってきます。

■ mb_substr関数

 マルチバイト文字(全角文字)で構成される文字列の中から指定した位置の文字列を抜き出します。

関数名 mb_substr
パラメーターリスト
パラメター名 説明
string $str 対象となる文字列
int $start 正の場合は取り出す文字列の開始位置(先頭文字は0)
負の場合は最後から数えた開始位置
int $length 正の場合は取り出す文字列の長さ
負の場合は最後から指定分引いた文字の位置まで
省略した場合は最後まで
string $encoding 文字エンコーディング(文字コード)を指定
省略した場合は内部文字エンコーディング
返り値
string 切り出した文字列
mb_substr関数の仕様

○ ファイル

 「SubstrTest.php」ファイルをコピーして、次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 MbSubstrTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

MbSubstrTest.php

  1. <body>
  2. <?php
  3. //ターゲットとなる文字列を用意する
  4. $target = 'わたしはバナナが好きです。';
  5. //文字列の一部を取得する
  6. $ret = mb_substr($target, 8, 4, 'utf-8');
  7. print($ret);
  8. print('<hr>');
  9. $ret = mb_substr($target, 4, -6, 'utf-8');
  10. print($ret);
  11. ?>
  12. </body>

○ 実行結果

実行結果
実行結果

○ 解説

 13行目で、「mb_substr」関数を使用しています。第1引数にターゲットとなる文字列を指定しています。第2引数に「8」を、第3引数に「4」を、第4引数に「utf-8」を指定しているため、0から始まる8番目の文字から4文字分切り出され、返ってきます。その際に文字列はUTF-8の文字コードで判別されます。

 19行目のmb_substr関数は、第2引数に「4」を、第3引数に「-6」を指定しているため、0から始まる4番目の文字から、最後の文字から数えて6文字分の位置まで抜き出され、返ってきます。

前へ