为什么使用stripos()的代码不起作用?

时间:2011-05-02 21:06:15

标签: php string

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”它可以正常工作,但我不能这样做,因为它会自动搜索,这是一个错误吗?

2 个答案:

答案 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 "".

http://php.net/stripos