为什么以下PHP代码不起作用:
$string = "123";
$search = "123";
if(strpos($string,$search))
{
echo "found";
}else{
echo "not found";
}
Run Code Online (Sandbox Code Playgroud)
因为$ search在$ string中 - 不应该被触发为找到?
此函数可能返回布尔值FALSE,但也可能返回非布尔值,该值的计算结果为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.
在你的情况下,字符串在索引0和php中找到0 == false
解决方案是使用严格的比较器
echo strpos($string,$search) === false
? "not found"
: "found";
Run Code Online (Sandbox Code Playgroud)
另一个
echo is_int(strpos($string,$search))
? "found"
: "not found";
Run Code Online (Sandbox Code Playgroud)
或者其他......让我们说有趣:D只是为了说明.我不推荐这个.
echo strpos('_' . $string,$search) // we just shift the string 1 to the right
? "found"
: "not found";
Run Code Online (Sandbox Code Playgroud)
strpos$search返回找到的第一个偏移量- 0。0依次评估为false. 因此 if 失败。
如果$search没有找到,strpos则返回FALSE。首先检查 的返回值!== FALSE,然后检查偏移量。
感谢所有在评论中指出这一点的人。
请参阅: http: //php.net/manual/en/function.strpos.php
| 归档时间: |
|
| 查看次数: |
6885 次 |
| 最近记录: |