1

这里的第一个帖子,请多多包涵,哈哈

只是想在这里检查我的工作我有一个验证电子邮件地址的表单,但是现在更改为 php 5.3 时出现错误

有人可以查看我的更改并告诉我我缺少什么,因为它不起作用

老路

function valid_email($email)
{
// check an email address is valid
if (ereg('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

新的方法

function valid_email($email)
{
// check an email address is valid
if (preg_match(('^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$', $email))
return true;
else
return false;
}

表单发送没有电子邮件验证。我不知道它的问题很简单,但我无法解决

提前致谢

4

2 回答 2

1

不要使用正则表达式来验证电子邮件地址或超链接。另外,据我所知, ereg 已被弃用。从现在开始将 preg 与正则表达式一起使用。验证电子邮件地址的代码是:

if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
    echo "This email address: $email_address is invalid. Enter a new one please";
}

如果您必须使用正则表达式,请使用此 RFC-822 regex ,但这对于您要执行的操作可能有点过于复杂。

于 2013-10-31T02:25:35.527 回答
0

首先与 ereg 不同,使用 preg_match 您需要将模式包含在分隔符内,通常是“/”,但如果您愿意也可以使用其他字符。例如,

preg_match('/^pattern$/', $email)

其次,在您的代码中,函数名称“preg_match((”)后面有一个额外的“(”,应该是“preg_match(”)。

您可能需要考虑使用以下正则表达式。它可以防止域名以破折号开头或结尾,例如 username@-domain-.com,但仍然允许在域名中使用破折号,例如 username@my-domain.com

function isValidEmail($email)
{
    return preg_match('/\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}\z/', $email)
        && preg_match('/^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/', $email);
}

请参阅在 PHP 中使用正则表达式验证电子邮件地址

于 2013-10-31T02:22:25.497 回答