PHP 5.2 preg_match()编译失败

时间:2011-10-22 11:16:25

标签: php compilation preg-match

非常感谢一些帮助。我的主机服务器端更新导致我的评论表格抛出两个验证错误。第一个是:preg_match()返回警告:preg_match()[function.preg-match]:编译失败:在[脚本位置此处和行错误]中的偏移13处的字符类中的范围乱序 - 第二个是在主题检查处抵消14。

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

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

和主题检查:

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

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

2 个答案:

答案 0 :(得分:9)

你需要逃避-减号。它具有特殊含义的字符类,如错误消息提示。在减号前使用反斜杠:

preg_match('/[^a-zA-Z0-9_\-.]/'

(或者-可能是角色组中的第一个或最后一个,所以它失去了它的特殊功能。)

答案 1 :(得分:1)

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

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