1

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

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

在注册页面上我已经替换了这个

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;
}

我该如何解决这个问题?

4

1 回答 1

1

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

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

所以这应该更像原来的:

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

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

顺便说一句,我不知道您的验证码到底需要什么,但是有更简单的方法可以使用filter_var().

于 2014-04-10T01:46:40.700 回答