文字列の一部を取得(substr, mb_substr)

広告

文字列の中から指定した位置から指定した分だけ文字を取り出します。

引数に指定した文字列から一部分を取り出します。開始位置だけを指定した
場合は指定した場所から最後までを取り出し、長さも指定した場合は指定し
た位置から指定した長さだけの文字列を取り出します。
位置の指定や長さはバイト数で指定してます。

引数:
  string  対象の文字列
  start  取り出し開始位置(0なら先頭)
  length  取り出す文字のバイト数
返り値:
  取り出した文字列

実際の例で見てみます。

substr('abcde', 0, 2) --> ab
substr('abcde', 1, 3) --> bcd
substr('abcde', 4) --> de
substr('あいう', 2, 2) --> い

バイト数で指定するため、全角文字が含まれる文字列に対して行う場合は注意が必要です。全角文字は1文字が2バイトですので、中間の位置などを指定してしまうと、どのような結果となるか分かりません。

また開始位置をマイナスの値で指定した場合、文字列の最後の位置から先頭に向かって何文字目かという意味になります。

substr('abcde', -2, 2) --> de
substr('abcde', -3) --> cde

文字数で指定した場合には「mb_substr」関数を使います。半角文字も全角文字も1文字は1文字として扱います。

引数に指定した文字列から一部分を取り出します。開始位置だけを指定した
場合は指定した場所から最後までを取り出し、長さも指定した場合は指定し
た位置から指定した長さだけの文字列を取り出します。
位置の指定や長さは文字数で指定してます。

引数:
  string  対象の文字列
  start  取り出し開始位置(0なら先頭)
  length  取り出す文字数
  encoding  文字コード
返り値:
  取り出した文字列

では実際に試して見ます。

functest61.php

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

$str1 = 'abcdef';
$substr1 = substr($str1, 0, 1);
$substr2 = substr($str1, 2, 3);

print($str1.' の0バイトから1バイト取り出すと '.$substr1.' です<br>');
print($str1.' の2バイトから3バイト取り出すと '.$substr2.' です<br><br>');

$str2 = 'こんにちは';
$substr3 = substr($str2, 2, 2);
$substr4 = mb_substr($str2, 2, 2);

print($str2.' の2バイトから2バイト取り出すと '.$substr3.' です<br>');
print($str2.' の2文字目から2文字取り出すと '.$substr4.' です<br>');

?>
</body>
</html>

上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

substrのテスト

( Written by Tatsuo Ikura )