[PHP] strpos() を使うときに気をつけること
初心者がやりがちなミス。
前提知識
1. strpos()
は検索文字列の始まる位置を返す
strpos('This is a pen.', 'h');
// 1
strpos('This is a pen.', 'T');
// 0
見つからなかった場合は false
を返す。
strpos('This is a pen.', 'U');
// false
2. PHP は 0
を false
として扱う
if (0) {
echo '0 is true';
} else {
echo '0 is false';
}
// 0 is false
if (2) {
echo '2 is true';
} else {
echo '2 is false';
}
// 2 is true
0
以外の数値は true
として扱う。
間違った使い方
検索文字列が先頭にあったとき、検索文字列が見つかったとしても if(0)
は if(false)
だから判定が false
になってしまう。
if (strpos('This is a pen.', 'T')) {
echo 'T is found';
} else {
echo 'T is not found';
}
// T is not found
正しい使い方
if (strpos('This is a pen.', 'T') !== false) {
echo 'T is found';
} else {
echo 'T is not found';
}
// T is found
言語や関数の仕様を理解すること
このミスは、言語と関数の仕様をよく理解していなかったために起こってしまったもの。 コードを書くときは、仕様をよく確認してから書くようにして、少しでも動作に不安があればドキュメントに立ち返る。