Php Eregi和preg_匹配替换,capcha和电子邮件验证程序出现大错误

Php Eregi和preg_匹配替换,capcha和电子邮件验证程序出现大错误,php,preg-match,validation,eregi,Php,Preg Match,Validation,Eregi,我知道有很多问题与这个主题有关,但经过几天的研究,我没有发现任何东西可以帮助这个特定的案例,所以这里是: 我已经在我的网站的2个文件中用preg_match替换了不推荐的eregi,现在capcha代码在注册页面上给出了一个错误,即使代码是绝对正确的 在注册页面上,我替换了这个 function is_valid_username($username) { if(!eregi("^[a-z0-9]*$", trim(str_replace(" ","",$username)))) {

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

我已经在我的网站的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(!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$^", $email)) {
    $result = 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]*$^", trim(str_replace(" ","",$username)))) {
    return 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\u match
表达式的末尾添加
I
修饰符

另外,
^
表示输入的开始,您已将其用作输入

所以这应该更像原版:

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


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

谢谢,我已经按照建议替换了它们,但相同result@KlaussGekker您提供的代码和我修改的代码与验证码无关,而是与用户名和电子邮件有关,所以验证码的错误可能在其他地方。我现在注意到,如果我离开验证码字段emtpty,它不会给出错误。。。奇怪..@KlaussGekker这不好:-)仅供参考:TLD不限于4个字符的长度,请参阅: