2016年12月24日土曜日

PHP/strpos/文字列内の部分文字列が最初に現れる場所を見つける

部分一致している最初の文字位置を返す。
最初の位置はゼロ。(1なのってSQLぐらいか。。。)

Qiitaで良い記事がありました。
部分一致があるかの判定でstrposを使う場合、==ではなく===を使い、型判定まで使う必要があります。
※参照:Qiita 【PHP】特定の文字列を含むかのチェック

これはもし文の最初で一致していた場合、strposからはゼロが返ってきます。
つまり、「abcにaが含まれていない時」を表現しようと
strpos('abc' , 'a') == false とかいた場合、
0 == false となり、ゼロはfalseと同意なので
false == false (0 == 0なのかな?)のように最終的に比較され
true という結果になる、みたいです。「abcにaが含まれている」のに実行されてしまいます。

無理くりまとめると、

部分一致している時に実行 :strpos('abc' , 'a') !== false
部分一致していない時に実行:strpos('abc' , 'a') === false
と書きましょう

0 件のコメント:

コメントを投稿