我有一个输入字段,用于输入电子邮件地址,如下所示:
<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”的格式和需求?
答案 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