我目前正在SwiftMailer上发送电子邮件。我有一个单独的电子邮件验证脚本,检查电子邮件,以确保它们是有效的,然后使用SwiftMailer发送。它工作得很好。
但是,我的验证器不会拾取意外的双点(..)在电子邮件地址中,例如:
ben..sinclair@email.com或ben.sinclair@email..com
这是我的代码。如果他们在电子邮件地址中的任何位置放了两个点,我需要添加什么才能给出错误?
function valid_email($email) {
if (preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@([_0-9a-z][_0-9a-z-]*[_0-9a-z]\.)+[0-9a-z][a-z]+/", $email, $matches))
return true;
return false;
}发布于 2011-11-16 11:48:11
filter_var建议的答案: FILTER_VALIDATE_EMAIL验证时没有tld,它并不完美,例如,它认为name@example是有效的电子邮件地址,而它不是。
function checkEmailAddress( $email = "" ) {
$email = trim($email);
$email = str_replace( " ", "", $email );
if( filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE )
return FALSE;
if ( substr_count( $email, '@' ) > 1 )//more than one '@'?
return FALSE;
if ( preg_match( "#[\;\#\n\r\*\'\"<>&\%\!\(\)\{\}\[\]\?\\/\s]#", $email ) )
return FALSE;
else if ( preg_match( "/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/", $email) )
return TRUE;
else
return FALSE;
}希望它能有所帮助:)
https://stackoverflow.com/questions/8145969
复制相似问题