为什么strpos不';t与“>";以及其他chracter


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

我想检查字符串中是否存在特殊字符,如"<">"或双引号本身。但我的函数总是返回true。

谢谢

这是代码:

$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要么返回false,要么返回一个整数值,如5。它不返回true

因此(strpos($name, "<")===true总是返回false。

您的代码评估为:

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

您需要使用以下格式:

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

所以你的代码应该看起来像:

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

strpos从不返回TRUE。它可能返回FALSE。解决方案:更改与!== FALSE 的比较