php problem: strpos function not working

前端 未结 7 1471
鱼传尺愫
鱼传尺愫 2020-12-21 00:14

why is the following php code not working:

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

if(strpos($string,$search))
{
    echo \"found\";
}else{
    echo \"not fou         


        
7条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-21 00:54

    This is mentioned in the Manual: strpos()

    This function may return Boolean FALSE, but may also return a non-Boolean value which evaluates to FALSE, such as 0 or "". Please read the section on Booleans for more information. Use the === operator for testing the return value of this function.

    In your case the string is found at the index 0 and in php 0 == false

    The solution is to just use the strict comparator

    echo strpos($string,$search) === false
         ? "not found"
         : "found";
    

    Another one

    echo is_int(strpos($string,$search))
         ? "found"
         : "not found";
    

    Or something ... lets say interesting :D Just for illustration. I don't recommend this one.

    echo strpos('_' . $string,$search) // we just shift the string 1 to the right
         ? "found"
         : "not found";
    

提交回复
热议问题