- function validEmail($email) {
- $isValid = true;
- $atIndex = strrpos ( $email, "@" );
- if (is_bool ( $atIndex ) && ! $atIndex) {
- $isValid = false;
- } else {
- $domain = substr ( $email, $atIndex + 1 );
- $local = substr ( $email, 0, $atIndex );
- $localLen = strlen ( $local );
- $domainLen = strlen ( $domain );
- if ($localLen < 1 || $localLen > 64) {
- // local part length exceeded
- $isValid = false;
- } else if ($domainLen < 1 || $domainLen > 255) {
- // domain part length exceeded
- $isValid = false;
- } else if ($local [0] == '.' || $local [$localLen - 1] == '.') {
- // local part starts or ends with '.'
- $isValid = false;
- } else if (preg_match ( '/\\\\.\\\\./', $local )) {
- // local part has two consecutive dots
- $isValid = false;
- } else if (! preg_match ( '/^[A-Za-z0-9\\\\-\\\\.]+$/', $domain )) {
- // character not valid in domain part
- $isValid = false;
- } else if (preg_match ( '/\\\\.\\\\./', $domain )) {
- // domain part has two consecutive dots
- $isValid = false;
- } else if (! preg_match ( '/^(\\\\\\\\.|[A-Za-z0-9!#%&`_=\\\\/$\\'*+?^{}|~.-])+$/', str_replace ( "\\\\\\\\", "", $local ) )) {
- // character not valid in local part unless
- // local part is quoted
- if (! preg_match ( '/^"(\\\\\\\\"|[^"])+"$/', str_replace ( "\\\\\\\\", "", $local ) )) {
- $isValid = false;
- }
- }
- //5.3.0 This function is now available on Windows platforms.
- if ($isValid && ! (checkdnsrr ( $domain, "MX" ) || checkdnsrr ( $domain, "A" ))) {
- // domain not found in DNS
- $isValid = false;
- }
- }
- return $isValid;
- }
- //该片段来自于http://www.codesnippet.cn/detail/100420132783.html
来源: http://www.codesnippet.cn/detail/100420132783.html