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
问题是你不应该使用 ==
来比较 0
和 false
;你应该使用 ===
,像这样:
if(strpos("abcdefghijklmnop","http://www.") === 0) {
}
或者:
if(strpos("abcdefghijklmnop","http://www.") === false) {
}
有关详细信息,请参阅 Comparison Operators :
-
如果
$a == $b
将为TRUE
。
如果 $a === $b
将为TRUE
,并且它们属于同一类型。
$a
等于 $b
,$a
等于 $b
,并且,引用 the manual page of strpos
:
This function may return Boolean
FALSE
, but may also return a non-Boolean value which evaluates toFALSE
, such as0
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/