ある文字列の中に特定の文字列が含まれているかをチェックする場合に、
strpos()関数とstrstr()関数のどちらを使うかで悩みますが、
私は、
strpos()関数の方を使用します。
理由は、
PHPのリファレンスに、
単純に文字列の検索を行う場合には、
「注意: もし特定の haystack に needle があるかどうかを調べるだけの場合、 より早く少ないメモリを使用する strpos() を代わりに使用してください。」
と記載されているからです。
なので、
それ程大きく変わるとは思いませんが、
念の為にstrpos()関数を使っているだけですが。
因みに、
strpos()関数を使用した時の返り値は
「検索対象文字列の中で検索文字が最初に現れる場所」、
strstr()関数を使用した時の返り値は
「検索対象文字列の検索文字が最初に現れる場所から検索対象文字列の終わりまで」
です。
つまり、
echo strpos("abcdefg", "cd");
echo strstr("abcdefg", "cd");
とすると、
それぞれの返り値は「2」、「cdefg」となります。
ここで注意しないといけないのは、
例えば、
echo strpos("abcdefg", "ab");
だと「0」が返ってきてしまいます。
これって結構まずくて、
if(strpos("abcdefg", "ab")){
echo "abは含まれています";
}else{
echo "abは含まれていません";
}
とした場合に、
「0」が返ってきてしまうために、
正常に判定が行えずに、
「abは含まれていません」と出力されてしまいます。
なので、
strpos()関数を使って文字列の検索処理を行う場合には、
必ず、
if(strpos("abcdefg", "ab") !== false){
echo "abは含まれています";
}else{
echo "abは含まれていません";
}
としてください。
この記事へのコメントはありません。