php 5 strpos() 返回 0 和 false 之间的区别?

标签 php strpos

if(strpos("http://www.example.com","http://www.")==0){ // do work}

我希望这可以解决,确实如此。但是当我这样做时会发生什么

if(strpos("abcdefghijklmnop","http://www.")==0){// do work}

这也通过 php 5 传递,因为据我所知 strpos 返回 false ,它转换为 0。

这是正确的想法/行为吗?如果是这样,测试子字符串是否位于另一个字符串的开头的解决方法是什么?

最佳答案

是的,这是正确的/预期的行为:

  • strpos 可以在字符串开头有匹配时返回0
  • 没有匹配时返回false

问题是你不应该使用 == 来比较 0false ;你应该使用 ===,像这样:

if(strpos("abcdefghijklmnop","http://www.") === 0) {

}

或者:

if(strpos("abcdefghijklmnop","http://www.") === false) {

}


有关详细信息,请参阅 Comparison Operators :

    如果 $a 等于 $b
  • $a == $b 将为 TRUE
  • 如果 $a 等于 $b
  • $a === $b 将为 TRUE,并且它们属于同一类型

并且,引用 the manual page of strpos :

This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "".
Please read the section on Booleans for more information.
Use the === operator for testing the return value of this function.

关于php 5 strpos() 返回 0 和 false 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396713/

相关文章:

php - Zend Service Amazon - 如何在子类别中搜索?

php - SQL 表不以 .sql 的形式保存在 mysql 文件夹中,而是以 .ibd 的形式保存

php - 小黑 "?"位?

php preg_split 最后出现的字符

php - 使用 html 标签搜索字符串

php - 本地 Apache 服务器 mod_rewrite/pretty 链接问题

PHP strpos() 函数比较数字中的字符串冲突

php - 警告:strpos()期望参数1为字符串资源

php - 如何使用 Strpos() 在针后查找下一个字符串

php - 为什么 strpos 不适用于 ">"和其他字符