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


Eregi and preg_match replacement, big error on capcha and email validator

我知道有很多问题与这个主题有关,但经过几天的研究,我没有发现对这个特定案例有帮助的东西,所以它是:

我已经在我的网站的两个文件中用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;
}

如何解决此问题?

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

此外,^表示输入的开始,您已将其用作分隔符。

所以这应该更像原来的:

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

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

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