Home  >  Article  >  php教程  >  PHP 验证Email的函数

PHP 验证Email的函数

PHP中文网
PHP中文网Original
2016-05-25 17:13:401317browse

PHP 验证Email的函数 

<?php
 
function validateEmail($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] == &#39;.&#39; || $local[$localLen-1] == &#39;.&#39;)
      {
         // local part starts or ends with &#39;.&#39;
         $isValid = false;
      }
      else if (preg_match(&#39;/\\.\\./&#39;, $local))
      {
         // local part has two consecutive dots
         $isValid = false;
      }
      else if (!preg_match(&#39;/^[A-Za-z0-9\\-\\.]+$/&#39;, $domain))
      {
         // character not valid in domain part
         $isValid = false;
      }
      else if (preg_match(&#39;/\\.\\./&#39;, $domain))
      {
         // domain part has two consecutive dots
         $isValid = false;
      }
      else if
(!preg_match(&#39;/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\&#39;*+?^{}|~.-])+$/&#39;,
                 str_replace("\\\\","",$local)))
      {
         // character not valid in local part unless 
         // local part is quoted
         if (!preg_match(&#39;/^"(\\\\"|[^"])+"$/&#39;,
             str_replace("\\\\","",$local)))
         {
            $isValid = false;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}
 
?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn