检查电子邮件格式HTML输入的有效性

时间:2014-01-14 08:16:14

标签: php validation email

我有一个输入字段,用于输入电子邮件地址,如下所示:

 <input type="email" name="email" id="email" title="E-mail(Format: email@example.com)">

我想在用户提交电子邮件地址时检查其有效性。所以我使用了这段代码:

 <?php
 $email =($_POST['email']);
 if(!filter_var($email, FILTER_VALIDATE_EMAIL))
 {
 echo "E-mail is not valid";
 }
else
{
 echo "E-mail is valid"; }? >

但是,虽然我输入的电子邮件为'someone @ example',但这将打印'电子邮件有效'。如何使用'someone@example.com'格式验证电子邮件?这意味着“@”和“.com”的格式和需求?

2 个答案:

答案 0 :(得分:0)

您需要使用电子邮件正则表达式和PHP函数preg_match http://au1.php.net/preg_match

答案 1 :(得分:0)

我建议使用此功能

public static function isEmail($value)
  {
    $atom = "[-a-z0-9!#$%&'*+/=?^_`{|}~]"; // RFC 5322 unquoted characters in local-part
    $localPart = "(?:\"(?:[ !\\x23-\\x5B\\x5D-\\x7E]*|\\\\[ -~])+\"|$atom+(?:\\.$atom+)*)"; // quoted or unquoted
    $alpha = "a-z\x80-\xFF"; // superset of IDN
    $domain = "[0-9$alpha](?:[-0-9$alpha]{0,61}[0-9$alpha])?"; // RFC 1034 one domain component
    $topDomain = "[$alpha](?:[-0-9$alpha]{0,17}[$alpha])?";
    return (bool) preg_match("(^$localPart@(?:$domain\\.)+$topDomain\\z)i", $value);
}

它来自Nette框架,是我见过的最好的电子邮件验证功能。

https://github.com/nette/nette/blob/master/Nette/Utils/Validators.php