stripos()似乎没有像它应该的那样工作,这是我的代码:
$regex_blitz = array("#bols", "#Blitz", "#Blitz Ipva", "#detran", "#ipva", "biltz");
foreach($regex_blitz as $blitz)
{
echo $blitz;
echo "</br>";
echo $string;
echo "</br>";
if(stripos($string, $blitz))
{
echo 'aqui';
}
else
{
echo 'oi';echo "</br>";
}
}
这是输出:
#bols
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
#Blitz
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
#Blitz Ipva
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
#detran
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
#ipva
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
biltz
#Blitz av das americas sentido recreio, pista lateral. Em frente ao Ribalta!
oi
你可以注意到,当$ blitz是'#Blitz'时它应该通过'if',帮助我!
刚才注意到如果我在字符串中向前移动“#blitz”它可以正常工作,但我不能这样做,因为它会自动搜索,这是一个错误吗?
答案 0 :(得分:5)
问题是如果匹配位于字符串的开头,stripos将返回0。您需要使用!== false
进行检查。 http://php.net/manual/en/function.stripos.php
$regex_blitz = array("#bols", "#Blitz", "#Blitz Ipva", "#detran", "#ipva", "biltz");
foreach($regex_blitz as $blitz)
{
echo $blitz;
echo "</br>";
echo $string;
echo "</br>";
if(stripos($string, $blitz) !== false)
{
echo 'aqui';
}
else
{
echo 'oi';echo "</br>";
}
}
答案 1 :(得分:2)
有人监督大警告标志:
Warning
This function may return Boolean FALSE, but may also return a non-Boolean value
which evaluates to FALSE, such as 0 or "".