PHP strposで条件分岐

文字列の中に指定したキーがないか探したいとき、 strposメソッドを使って以下のように書ける。

$message = "今日はいい天気ですね。";
$result = strpos($message, "天気");

$result = 5;

strposは、第1引数の何文字目から第2引数が現れるかを返してくれる。 なお、第1引数の中に、第2引数がない場合はfalseを返す。

strposを使って、文字列の中に、あるキーがあれば...なければ... という条件分岐を書きたいとき、 以下のように書くと、期待する結果が得られない場合がある。

if(strpos($message, "今日") != false){
     ...
}else{
     ...
}

この場合、strposは、0(false)を返すので、 文字列内にキーが含まれているにも関わらず、elseに進んでしまう。 以下のように書くことで、解決できる。

if(gettype(strpos($message, "今日")) === "integer"){
     ...
}else{
     ...
}