substr
(PHP 4, PHP 5, PHP 7)
substr — 文字列の一部分を返す
説明
substr
( string $string
, int $offset
[, int|null $length
= null
] ) : string
文字列 string
の、offset
で指定された位置から length
バイト分の文字列を返します。
パラメータ
string
入力文字列。
offset
offset
が正の場合、返される文字列は、string
の 0 から数えてoffset
番目から始まる文字列となります。 例えば、文字列'abcdef
'において位置0
にある文字は、'a
'であり、 位置2
には'c
'があります。offset
が負の場合、返される文字列は、string
の後ろから数えてoffset
番目から始まる文字列となります。string
の長さがoffset
文字より短い場合はfalse
が返されます。例1 負の
offset
の使用<?php$rest = substr("abcdef", -1); // "f" を返す$rest = substr("abcdef", -2); // "ef" を返す$rest = substr("abcdef", -3, 1); // "d" を返す?>
length
length
が指定され、かつ正である場合、 返される文字列はoffset
(string
の長さに依存します) から数えてlength
文字数分となります。length
が指定され、かつ負である場合、string
の終端からその文字数分の文字が省略されます (offset
が負の場合は、 開始位置を算出したあとで)。 もしoffset
が切り出し位置を超える場合、false
が返されます。length
が指定され、かつ0
、null
、もしくはfalse
であれば、空の文字が返されます。length
を省略した場合は、offset
の位置から文字列の最後までの部分文字列を返します。例2 負の
length
の使用<?php$rest = substr("abcdef", 0, -1); // "abcde" を返す$rest = substr("abcdef", 2, -1); // "cde" を返す$rest = substr("abcdef", 4, -4); // false を返す$rest = substr("abcdef", -3, -1); // "de" を返す?>
返り値
string
の一部を返します。失敗した場合に false
を返します。あるいは空文字列を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | length は、nullable になりました。
|
8.0.0 | この関数は、前のバージョンで false を返す場合に、空文字列を返すようになりました。
|
例
例3 基本的な substr() の使用法
<?phpecho substr('abcdef', 1); // bcdefecho substr('abcdef', 1, 3); // bcdecho substr('abcdef', 0, 4); // abcdecho substr('abcdef', 0, 8); // abcdefecho substr('abcdef', -1, 1); // f// 文字列中の 1 文字にアクセスすることも// "角括弧" を使用することで可能$string = 'abcdef';echo $string[0]; // aecho $string[3]; // decho $string[strlen($string)-1]; // f?>
例4 substr() でのキャストの挙動
<?phpclass apple { public function __toString() { return "green"; }}echo "1) ".var_export(substr("pear", 0, 2), true).PHP_EOL;echo "2) ".var_export(substr(54321, 0, 2), true).PHP_EOL;echo "3) ".var_export(substr(new apple(), 0, 2), true).PHP_EOL;echo "4) ".var_export(substr(true, 0, 1), true).PHP_EOL;echo "5) ".var_export(substr(false, 0, 1), true).PHP_EOL;echo "6) ".var_export(substr("", 0, 1), true).PHP_EOL;echo "7) ".var_export(substr(1.2e3, 0, 4), true).PHP_EOL;?>
上の例の PHP 7 での出力は、このようになります。
1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) '' 6) '' 7) '1200'
上の例の PHP 5 での出力は、このようになります。
1) 'pe' 2) '54' 3) 'gr' 4) '1' 5) false 6) false 7) '1200'
エラー / 例外
エラー時に false
を返します。
<?phpvar_dump(substr('a', 2)); // bool(false)?>
参考
- strrchr() - 文字列中に文字が最後に現れる場所を取得する
- substr_replace() - 文字列の一部を置換する
- preg_match() - 正規表現によるマッチングを行う
- trim() - 文字列の先頭および末尾にあるホワイトスペースを取り除く
- mb_substr() - 文字列の一部を得る
- wordwrap() - 指定した文字数で文字列を分割する
- 文字列への文字単位のアクセスと修正