<?php
if(stripos('http://cp.uctorrent.com', 'cp.utorrent.com') >= 0){
echo "Good1";
}else{
echo "Bad1";
}
if(stripos('http://uctorrent.com', 'cp.utorrent.com') >= 0){
echo "Good2";
}else{
echo "Bad2";
}
?>
Run Code Online (Sandbox Code Playgroud)
输出是
Good1Good2
应该是
Good1Bad2
<?php
if(false >= 0) echo "Good";
else echo "Bad";
// this code prints Good
?>
Run Code Online (Sandbox Code Playgroud)
这不是一个bug,它是一个"奇怪的"布尔转换.
stripos 在找不到字符串时返回false,在PHP中false返回0.
直接来自文档(问题是相反的):
警告此函数可能返回布尔值FALSE,但也可能返回非布尔值,其值为FALSE,例如0或"".有关更多信息,请阅读有关布尔值的部分.使用===运算符测试此函数的返回值.