有谁能告诉我为什么1(黑名单)不会抛出意外的结束错误而2(白名单)会这样做? 1并未过滤掉所有特殊字符,因此我想使用白名单方法。我得到的错误似乎与语法有关但我无法发现它。感谢您帮助我结束我的痛苦。
php
(1)
if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $posteduid))
{
$error = "You may not use special characters in your username";
}
(2)
if (!preg_match("#^[a-zA-Z0-9]+$#", $posteduid))
{
$error = "You may not use special characters in your username";
}
错误消息:
Parse error: syntax error, unexpected $end in /.../join.php on line 346
答案 0 :(得分:3)
当你注释掉这一行时
if (preg_match('/[\'^£$%&*()}{@#~?><>,|=_+¬-]/', $posteduid))
使用//
它仍然会看到?>
并停止解析PHP,从而导致一个奇怪的错误。只需删除该部分或使用/* */
- 评论。您的代码示例在白名单上没有任何问题。