strposで0とFALSEの場合の判定
なぜこのような意味不明な仕様にしたのか理解に苦しむ。
ある文字が文字列の中に含まれているかどうかを調べるのにstrposを使う。文字があればその位置を数字で、なければFalseを返す。
しかし問題は文字が登場する位置が0、つまり先頭の場合だ。その場合、
$pos = strpos($str, "X"); if( !$pos ){ print " pos is false"; } else{ print " pos is " . $pos; }
普通から、
pos is 0
と印刷されてしかるべきだが、この場合は、
pos is false
と印刷される。それは、PHPが、0とFalse、””(空文字列)などを同じに扱うからだ。
ref: http://www.programming-magic.com/20071124195053/trackback/
したがってその場合は厳密な比較である、===を使用して、
$pos = strpos($str, "X"); if( $pos === false ){ print " pos is false"; } else{ print " pos is " . $pos; }
としてやらねばならない。