升级Wamp后preg_match失败

时间:2015-04-10 09:26:21

标签: php regex preg-match wamp

为防止恶意用户尝试利用密钥,我们会确保使用preg_match仅使用字母数字文本和其他一些项目命名密钥。

这是代码:

if (!preg_match('#^[&a-zA-Z0-9\.:_/-\s]+$#uD', $str)) {
    exit('String not valid:' . $str);
}

此功能一直运行到上周,当客户在测试服务器上更新WAMP时。使用字符串dverse.session,代码输入EXIT()。我用http://www.phpliveregex.com/检查了正则表达式,但正则表达式运行良好。可能是什么问题呢?

2 个答案:

答案 0 :(得分:0)

你应该在正则表达式中转义减号:

if (!preg_match('#^[&a-zA-Z0-9\.:_/\-\s]+$#uD', $str)) {
    exit('String not valid:' . $str);
}

答案 1 :(得分:0)

解决。感谢大家,解决方案是:

if (!preg_match('#^[&a-zA-Z0-9\.:_/\-\s]+$#uD', $str)) {
        exit('String not valid:' . $str);
    }

这是由更改PHP版本引起的。您可以使用以下代码在http://sandbox.onlinephpfunctions.com/进行检查:

$str = "dverse.session";

if (!preg_match('#^[&a-zA-Z0-9\.:_/-\s]+$#uD', $str)) {
    exit('String not valid:' . $str);
} else {
    echo "OK";
}

将PHP版本从5.5.5更改为5.6.2(或5.5.18)会出现错误。谢谢!