strpos总是在php中返回true

4 php string strpos

我写了这段代码:

$token="Birth";
$msg="I am awesome and I know it";

if(strpos(strtolower($msg),strtolower($token)) >=0){
    echo 'ok';
}
Run Code Online (Sandbox Code Playgroud)

它打印 ok

正如我们所看到的那样Birth,消息中没有任何字样,但它仍然会返回true.我想它应该返回,false因为php手册说.

在这方面有任何帮助,

hek*_*mgl 8

strpos()FALSE如果找不到令牌则返回,如果找到令牌,则返回令牌的(第一)位置.您需要FALSE使用严格比较运算符检查布尔值,===以确定是否在字符串中找到了令牌:

if(strpos(strtolower($msg),strtolower($token)) !== false){
    echo 'ok';
} else {
    echo 'not ok';
}
Run Code Online (Sandbox Code Playgroud)

这是因为PHP的松散打字系统.如果你使用>=0,并且找不到令牌,PHP会在操作之前转换to 的FALSE返回值.并评估为.strpos0>=0 >=0TRUE