Search code examples
phpstrpos

why strpos doesn't work with ">" and other chracters


I want to check whether special characters such as "<" ">" or the double quote itself is found in a string. But my function always return true.

Thank you

This is the code:

$name = "<h1><dfdafdfds";

function correctName($name){
    if (strlen($name) < 5 || (strpos($name, "<")===true) || 
    (strpos($name, ">")===true) || (strpos($name, "\"")===true)){

        return false;
    }else{
        return true;
    }
}

Solution

  • Strpos either returns false or an integer value such as 5. It does NOT return true.

    Therefore (strpos($name, "<")===true always returns false.

    your code evaluates as:

    if (strlen($name) < 5 || false) || 
    (false) || (false)){
    
        return false;
    }else{
        return true;
    }
    

    You need to use this format:

    strpos($name, '<') !== false
    

    so your code should look like:

    if (strlen($name) < 5 || strpos($name, "<") !== false || strpos($name, ">") !== false || strpos($name, "\"") !== false) {