第一篇帖子在这里忍受我哈哈
我想在这里查看我的工作我有一个验证电子邮件地址的表单,但现在更改为php 5.3错误
可以请一些人查看我的更改,并告诉我,因为它无法正常工作而失踪
OLD WAY
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;
}
表格发送没有电子邮件验证。 我不知道有什么简单但我无法解决它
提前致谢
答案 0 :(得分:1)
请勿使用正则表达式验证电子邮件地址或超链接。另外,据我所知,ereg已被弃用。从现在开始使用preg和正则表达式。验证电子邮件地址的代码是:
if (filter_var($email_address, FILTER_VALIDATE_EMAIL)) {
echo "This email address: $email_address is invalid. Enter a new one please";
}
如果您必须使用正则表达式,请使用this RFC-822 regex ,但对于你想要做的事情,这可能有点过于复杂。
答案 1 :(得分: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);
}