substr-文字列関数

substr関数は文字列中の指定位置からの文字列を返す関数です。以下に使用方法を示します。
//substr("対象文字列", "開始位置", "バイト");

$str = "PHP&CGI";
$str = substr($str, 4);

$str1 = substr("PHP&CGI", -1); //?

echo $str;
echo $str1;
1番目の引数には対象文字列を指定し、2番目の引数には開始位置を指定します。 3番目の"バイト"はオプションの引数です。
上の例では引数に変数str(PHP&CGI)を対象文字列に指定し、開始位置には4を指定しています。 したがって、文字列"PHP&CGI"のうち"PHP&"より後にある文字列 CGI がブラウザに出力されます。

?では開始位置に-1を指定しています。負の数を開始位置に指定した場合は末尾から数えて何番目の文字からというようになります。 -1というのは末尾から1番目の文字となるので I が出力されます。-3を指定した場合は CGI という事になります。

substrで抽出する文字数を指定

substr関数はオプションで"バイト"を指定することで抽出する文字数を指定することが可能です。(1バイト文字の場合) 以下に例を示します。
$str = "PHP&CGI";
$str = substr($str, -3, 2); //?

$str1 = substr("PHP&CGI", 0, 3); //?

echo $str;
echo $str1;
?では開始位置に-3、バイトに2を指定しているので末尾から3文字の"CGI"の先頭から2文字目まで抽出されることになります。 したがって、 CG が返されます。

?では開始位置に0、バイトに3を指定しているので先頭から3文字目まで抽出されることになるので、 PHP が返されます。 substr関数を使用しないで同じような抽出を行う方法があります。以下に示します。
$str = "PHP&CGI";
echo $str{0}.$str{1}.$str{2};
$str{0}は変数strの先頭の文字を表し、$str{1}は2文字目の文字、$str{2}は3文字目の文字を表します。 したがって、 PHP  がブラウザに出力されます。