我想检查一下特殊字符,例如“<” “>” 中或双引号本身在字符串中找到。但我的功能总是回归真实。
谢谢
这是代码:
$name = "<h1><dfdafdfds";
function correctName($name){
if (strlen($name) < 5 || (strpos($name, "<")===true) ||
(strpos($name, ">")===true) || (strpos($name, "\"")===true)){
return false;
}else{
return true;
}
}
答案 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