🐘

[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 は 0false として扱う

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

言語や関数の仕様を理解すること

このミスは、言語と関数の仕様をよく理解していなかったために起こってしまったもの。 コードを書くときは、仕様をよく確認してから書くようにして、少しでも動作に不安があればドキュメントに立ち返る。