PHP 5.2 preg_match()编译失败

PHP 5.2 preg_match()编译失败,php,compilation,preg-match,Php,Compilation,Preg Match,非常感谢您的帮助。我的主机服务器端更新导致我的评论表单抛出两个验证错误。第一个是:preg_match()返回警告:preg_match()[function.preg match]:编译失败:字符类中的范围在[script location here and line error]的偏移量13处出现顺序错误,-第二个是在偏移量14处进行主题检查 它会在电子邮件地址检查中执行此操作: if (preg_match('/[^a-zA-Z0-9_-.]/', $_POST['txtEmail']))

非常感谢您的帮助。我的主机服务器端更新导致我的评论表单抛出两个验证错误。第一个是:preg_match()返回警告:preg_match()[function.preg match]:编译失败:字符类中的范围在[script location here and line error]的偏移量13处出现顺序错误,-第二个是在偏移量14处进行主题检查

它会在电子邮件地址检查中执行此操作:

if (preg_match('/[^a-zA-Z0-9_-.]/', $_POST['txtEmail']))
和主题检查:

if (preg_match('/[^a-zA-Z0-9:?-. ]/', $_POST['txtSubject']))

我不熟悉PHP,但可以剪切和粘贴!我的网站是frowey.com,是联系我们上的评论表单在托管操作系统更新后开始抛出错误。提前谢谢。

您需要避开
-
减号。正如错误消息所提示的,它对字符类有特殊意义。在减号前使用反斜杠:

if (preg_match('/[^a-zA-Z0-9_\.-]/', $_POST['txtEmail']))

if (preg_match('/[^a-zA-Z0-9:\?\.-]/', $_POST['txtSubject']))
preg_match('/[^a-zA-Z0-9_\-.]/'

(或者,
-
可能是字符组中的第一个或最后一个,因此它失去了它的特殊功能。)

非常感谢这两个答案。我现在就去看看,让你们知道结果。好了!谢谢还需要更改电子邮件地址验证。现在一切都好了。再次感谢。现在一切都好了。再次感谢。两个答案都很有帮助。非常感谢。