2012-07-28 116 views
3

我目前正在使用AJAX/JS以使表单没有按钮单击或页面刷新。我的询问是关于电子邮件验证。 PHP代码现在检查一个电子邮件地址是否有效。我只想让它接受来自某个域名的电子邮件。我如何通过php实现只接受gmail的电子邮件地址? ExamplePHP:电子邮件验证和接受来自某个域名的电子邮件地址

PHP电子邮件的验证:

if($_POST) { 
    $email = $_POST['email']; 
    if (preg_match('|^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,4}$|i', $email)) { 
     echo ('<div id="email_input"><span id="resultval">'.$email.'</span></div>'); 
    } 
    else { 
     echo ('<div id="email_input"><span id="resultval">Include a valid email address.</span></div>'); 
    } 
} 

回答

4

PHP有一个简单的功能,以帮助您如果电子邮件检查地址有效:

$isValid = filter_var($email, FILTER_VALIDATE_EMAIL); 

要检查的电子邮件地址是Gmail地址,下面会做的伎俩:

list ($user, $domain) = explode('@', $email); 
$isGmail = ($domain == 'gmail.com'); 
+0

谢谢你,就像一个魅力。我并不知道“FILTER_VALIDATE_EMAIL”,它非常有用! – CodingWonders90 2012-07-28 21:52:07

+0

我已经使用了此验证,并将[email protected]视为有效的邮件地址 – 2013-04-04 09:08:04

4

小心你的正则表达式,it won't validate all actual email addresses

你有一个内置的PHP函数来检查,如果邮件是有效的:

$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL); 

如果返回true,那么你只需要检查,如果字符串以@gmail.com结束。请注意,此功能可能有some strange issues,因为电子邮件验证标准可能令人惊讶。

如果你真的想这验证所有电子邮件地址的正则表达式,那就是:

(?:[a-z0-9!#$%&'*+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])