|
説明
string substr(string $string , int $offset , intnull $length = null )
パラメータ
-
string
-
入力文字列。
-
offset
-
offset が正の場合、返される文字列は、
string の 0 から数えて
offset 番目から始まる文字列となります。
例えば、文字列'abcdef 'において位置
0 にある文字は、'a 'であり、
位置2 には'c 'があります。
offset が負の場合、返される文字列は、
string の後ろから数えて
offset 番目から始まる文字列となります。
string の長さが
offset 文字より短い場合は、
空の文字列が返されます。
例1 負の offset の使用
<?php
echo substr("abcdef", -1), PHP_EOL; // "f" を返す
echo substr("abcdef", -2), PHP_EOL; // "ef" を返す
echo substr("abcdef", -3, 1), PHP_EOL; // "d" を返す
?>
-
length
-
length が指定され、かつ正である場合、
返される文字列は offset
(string の長さに依存します)
から数えてlength 文字数分となります。
length が指定され、かつ負である場合、
string の終端からその文字数分の文字が省略されます。
もし offset が切り出し位置を超える場合、
空の文字列が返されます。
length が指定され、かつ
0 であれば、空の文字が返されます。
length を省略した場合、または null の場合は、
offset の位置から文字列の最後までの部分文字列を返します。
例2 負の length の使用
<?php
echo substr("abcdef", 0, -1), PHP_EOL; // "abcde" を返す
echo substr("abcdef", 2, -1), PHP_EOL; // "cde" を返す
echo substr("abcdef", 4, -4), PHP_EOL; // "" を返す; PHP 8.0.0 より前のバージョンでは、false を返していました。
echo substr("abcdef", -3, -1), PHP_EOL; // "de" を返す
?>
戻り値
string の一部を返すか、空文字列を返します。
例
例3 基本的な substr の使用法
<?php
echo substr('abcdef', 1), PHP_EOL; // bcdef
echo substr("abcdef", 1, null), PHP_EOL; // bcdef; PHP 8.0.0 より前のバージョンでは、空の文字列を返していました。
echo substr('abcdef', 1, 3), PHP_EOL; // bcd
echo substr('abcdef', 0, 4), PHP_EOL; // abcd
echo substr('abcdef', 0, 8), PHP_EOL; // abcdef
echo substr('abcdef', -1, 1), PHP_EOL; // f
// 文字列中の 1 文字にアクセスすることも
// "角括弧" を使用することで可能
$string = 'abcdef';
echo $string[0], PHP_EOL; // a
echo $string[3], PHP_EOL; // d
echo $string[strlen($string)-1], PHP_EOL; // f
?>
例4 substr でのキャストの挙動
<?php
class 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;
?>
1) 'pe'
2) '54'
3) 'gr'
4) '1'
5) ''
6) ''
7) '1200'
例5 文字列の範囲が不正な場合
指定された文字列の範囲が正しくない場合、
substr は PHP 8.0.0 以降では空文字列を返します。
それより前のバージョンでは、false を返していました。
<?php
var_dump(substr('a', 2));
?>
上の例の PHP 8 での出力は、このようになります。:
上の例の PHP 7 での出力は、このようになります。
|