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

发表评论

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

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

921 983 336 460 504 577 191 504 657 840 686 566 495 429 895 986 049 943 118 029 576 548 230 747 163 030 626 677 508 947 550 046 430 100 482 656 367 839 810 018 418 007 030 367