为什么strpos不适用于“>”和其他人物

时间:2012-08-24 06:10:11

标签: php strpos

我想检查一下特殊字符,例如“<” “>” 中或双引号本身在字符串中找到。但我的功能总是回归真实。

谢谢

这是代码:

$name = "<h1><dfdafdfds";

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

        return false;
    }else{
        return true;
    }
}

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

strpos永远不会返回TRUE。它可能会返回FALSE。解决方案:将您的比较更改为!== FALSE

相关问题