php问题:strpos功能不起作用

Fux*_*uxi 5 php substr

为什么以下PHP代码不起作用:

$string = "123";
$search = "123";

if(strpos($string,$search))
{
    echo "found";
}else{
    echo "not found";
}
Run Code Online (Sandbox Code Playgroud)

因为$ search在$ string中 - 不应该被触发为找到?

Kin*_*nch 6

这在手册中提到:strpos()

此函数可能返回布尔值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)


Rya*_*yan 2

strpos$search返回找到的第一个偏移量- 00依次评估为false. 因此 if 失败。

如果$search没有找到,strpos则返回FALSE。首先检查 的返回值!== FALSE,然后检查偏移量。

感谢所有在评论中指出这一点的人。

请参阅: http: //php.net/manual/en/function.strpos.php