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