简体   繁体   中英

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;
    }
}

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) {

strpos never returns TRUE . It might return FALSE . Solution: change your comparisons to !== FALSE

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM