以下是该问题的测试代码
如果发出包含.com.com扩展名的无效电子邮件,则视为有效
请帮助解决相同的问题
提前致谢
<?php
if(isset($_POST['submit']))
{
function validate_email($email)
{
$exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
if(eregi($exp,$email))
{
if(checkdnsrr(array_pop(explode("@",$email)),"MX"))
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
$email = $_POST['email'];
print $details= validate_email($email);
}
?>
<form action="" method="post">
<h1> Email </h1>
<input type="email" name="email">
<button type="submit" name="submit"> SUBMIT </button>
</form>
答案 0 :(得分:1)
如何知道该电子邮件地址有误?
有效的电子邮件地址已经是#34;某人@ company&#34;
凡&#34;公司&#34;可能是您的Intranet系统主机名。出于这样的原因,FILTER_VALIDATE_EMAIL不会检查&#34;有效&#34; TLD,因为它无法知道它是否有效。
至于建议不要自己编写更具体的检查,因为在很多情况下这些检查会使您的应用程序无效。
答案 1 :(得分:0)
您可以使用
$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i";
或只是
filter_var('email@email',FILTER_VALIDATE_EMAIL)
答案 2 :(得分:-1)
您可以使用此正则表达式:
^([a-z\'0-9\._-]+)@([a-z0-9]+)((\.[a-z0-9]{2,3})(\.[a-z0-9]{2})|(\.[a-z0-9]{2,3}))$
与&#34; john.doe@gmail.com"合作;或者&#34; john.doe@domain.co.uk"但是现在有太多不同的tld可用,很难匹配所有可能性。
您应该尝试使用电子邮件验证服务的API。
此致