【问题标题】:PHP 5.2 preg_match() compilation failurePHP 5.2 preg_match() 编译失败
【发布时间】:2011-10-22 11:16:25
【问题描述】:

非常感谢一些帮助。我的主机服务器端更新导致我的评论表单抛出两个验证错误。第一个是: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,它是与我们联系的 cmets 表格,在托管操作系统更新后开始抛出错误。提前致谢。

【问题讨论】:

    标签: php compilation preg-match


    【解决方案1】:

    您需要转义 - 减号。正如错误消息提示的那样,它对字符类具有特殊含义。在减号前使用反斜杠:

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

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

    【讨论】:

    • 现在一切正常。再次感谢。两个答案都非常有帮助。非常感谢。
    【解决方案2】:
    if (preg_match('/[^a-zA-Z0-9_\.-]/', $_POST['txtEmail']))
    
    if (preg_match('/[^a-zA-Z0-9:\?\.-]/', $_POST['txtSubject']))
    

    【讨论】:

    • 非常感谢您的两个回答。我现在就去看看,然后告诉你结果。
    • 已排序!谢谢。还需要更改电子邮件地址验证。现在一切正常。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多