PHP 5.2 preg_match()编译失败

moc*_*chj 5 php compilation preg-match

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

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

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

和主题检查:

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

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

mar*_*rio 9

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

preg_match('/[^a-zA-Z0-9_\-.]/'
Run Code Online (Sandbox Code Playgroud)

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


小智 1

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

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