我有以下代码来验证消息。即使消息无效,消息也会传递并返回 true。
代码:
$message = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 \" ' ! & ( ) @ [ ] ? . : , ; - _";
if(isset($message) && strlen($message) > 10)
{
if (preg_match("/[a-zA-Z0-9 \"'!&()@[\]\?.:,;\-_]/u", $message))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
当前代码应该作为 true 传递,所有字符都有效,但是当我更改消息时
$message = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 \" ' ! & ( ) @ [ ] ? . : , ; - _ >";
它应该以最后一个字符失败。但它通过ands发送真实。我可能会错过一些东西或没有逃避一些东西。
最终,消息将通过 HTML 表单发送。
更新:
将正则表达式更改为
preg_match("/^[a-zA-Z0-9 \"'!&()@[]\?.:,;-_]+$/u", $message)
或者
if (preg_match("/^[a-zA-Z0-9 \"'!&()@[\]\?.:,;\-_]*$/u", $message))
修复了验证,没有想到字符的多次出现。