strpos,strstr,preg_matchではstrposが最も早いのでstrposを使用するのがよいそうです。
Contents
正規表現を使わない場合
PHPマニュアルにも下記のように書かれています。
strstr
もし特定の haystack に needle があるかどうかを調べるだけの場合、 より高速でメモリ消費も少ない strpos() を代わりに使用してください。
もし特定の haystack に needle があるかどうかを調べるだけの場合、 より高速でメモリ消費も少ない strpos() を代わりに使用してください。
strposは、該当する文字列が見つからなかった場合は、falseを返す。
該当する文字列が見つかった位置を数値で返すので、型までチェックする必要がある。そのため、===falseもしくは!==falseを使用するようにしましょう。
$a = 'How are you?'; $b = 'Good Night!'; if (strpos($a, 'are') !== false) { //含まれている場合 echo 'true'; } if (strpos($b, 'are') === false) { //含まれていない場合 echo 'false'; }
正規表現を使用する場合
$a = 'How are you?'; $b = 'Good Night!'; if (preg_match('/are/', $a)) { //含まれる場合 echo 'true'; } if (!preg_match('/are/', $b)) { //含まれない場合 echo 'false'; }
正規表現で判別するためには、preg_match()を使用します。
まとめ
変数内に特定の文字列が含まれているかどうかというのを調べる機会と言うのは結構あるかもしれません。
結構簡単に出来るので、覚えておくとよいと思います。