サンプル集  >  PHP  >  substr
substr
2009/06/05

substrで文字列の外を指したらどうなるのか試してみます。

◆環境
OS Windows XP Professional Version 2002 Service Pack 2
PHP 5.2.4

substrTest.php
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
<?php
$str="123";

// 開始位置が文字列より先
echo "1:".substr($str,10,1)."<\n";

// 文字数が文字列より長い
echo "2:".substr($str,0,10)."<\n";

// 開始位置マイナス
echo "3:".substr($str,-1,2)."<\n";
echo "3:".substr($str,-2,2)."<\n";
echo "3:".substr($str,-3,2)."<\n";

// 文字数マイナス
echo "4:".substr($str,2,-1)."<\n";
echo "4:".substr($str,2,-2)."<\n";
echo "4:".substr($str,2,-3)."<\n";

// 文字数を指定しない
echo "5:".substr($str,0)."<\n";

// 開始位置が文字列より先だが文字数がマイナス
echo "6:".substr($str,10,-9)."<\n";

// 文字数が0
echo "7:".substr($str,0,0)."<\n";
?>

◆実行結果
>php substrTest.php
1:<
2:123<
3:3<
3:23<
3:12<
4:<
4:<
4:<
5:123<
6:<
7:<

異常終了しないのが気持ち悪いですね。。。 結果は以下の通りでした。

#ケース結果考察
1開始位置が文字列より先空文字列文字列より開始位置が長いと何も抽出されない。
2文字数が文字列より長い123文字列全部が抽出された。
3開始位置マイナス3開始位置がマイナスだと末尾から先頭に戻ってる?
4文字数マイナス空文字列終了位置がマイナスだと何も抽出されない。
5文字数を指定しない123文字列全部が抽出された。
6開始位置が文字列より先だが文字数がマイナス空文字列何も抽出されない。
7文字数が0空文字列何も抽出されない。

▲ PageTop  ■ Home


Copyright (C) 2012 ymlib.com