Eregi和preg_match替换,capcha和电子邮件验证器上的大错误

时间:2014-04-10 01:39:06

标签: php preg-match validation eregi

我知道有很多与这个问题相关的问题,但经过几天的研究后,我找不到可以帮助这个特定情况的东西,所以这里是:

我已经在我网站的2个文件中用preg_match替换了已弃用的eregi,现在capcha代码在注册页面上出错,即使代码绝对正确

在注册页面上,我已经取代了这个

function is_valid_username($username) {
    if(!eregi("^[a-z0-9]*$", trim(str_replace(" ","",$username)))) {
        return 0;
    }

用这个

if(!preg_match("^[a-z0-9]*$^", trim(str_replace(" ","",$username)))) {
    return 0;
}

在我的第二个档案中,我已经取代了这个:

if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $email)) {
    $result = 0;
}

用这个

if(!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$^", $email)) {
    $result = 0;
}

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

eregi不区分大小写,因此您需要将i修饰符添加到preg_match表达式的末尾。

此外,^表示输入的开头,您已将其用作delimiter

所以这应该更像原作:

#^[a-z0-9]*$#i

#^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$#i

顺便说一下,我不知道您的验证码需要什么,但有更简单的方法可以使用filter_var()验证电子邮件地址。