php的strpos()函数的返回值false与0问题

php中的strpos函数定义说明如下:

int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

返回 needle 在 haystack 中首次出现的数字位置,以整型返回位置信息。如果没找到 needle, strpos() 将返回布尔型的 FALSE 值。

存在问题:

如果$needle出现在$haystack头部,则返回值为0。在不严格的判断中,0 = false,这样就无法区分是否找到。

解决方法:

使用符号“===”而不是“==”进行判断。
判断符号 “==”会转换类型再进行比较,而更严格的符号“===”会先判断类型是否相同,然后才进行比较。

如下举例:

/*
    判断字符串是否存在的函数
*/
function strexists($haystack, $needle) {
    return !(strpos($haystack, $needle) === FALSE);//注意这里的"==="
}
点赞 (1)
  1. arwant说道:
    Google Chrome 60.0.3112.113 Google Chrome 60.0.3112.113 Windows 10 x64 Edition Windows 10 x64 Edition

    return 之后还是无法看到0

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code