<?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] == '.' || $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;
         }
      }
      if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
      {
         // domain not found in DNS
         $isValid = false;
      }
   }
   return $isValid;
}
 
?>

最新文章

  1. DataGrid中的事件和方法
  2. MFC 不让程序显示在任务栏上
  3. javascript、正则的验证
  4. inline,block,inline-block的区别
  5. 10年程序员谈.Net程序员的职业规划(图/文) (转载)
  6. 【Android测试】【随笔】模拟双指点击
  7. BufferedInputStream/BufferedOutputStream复制文件
  8. Oracle 11g Windows 迁移至 Linux
  9. [swustoj 411] 售货员的难题
  10. JavaScript:int string 相互转化
  11. 利用 HTML5 WebGL 构建的 3D 拓扑图
  12. ssm简单搭建
  13. lua语言自学知识点----简单了解
  14. 计算机网络原理和OSI模型与TCP模型
  15. C# Queue 和Stack的实现
  16. 利用 MessageRPC 和 ShareMemory 来实现 分布式并行计算
  17. Android 开源项目 eoe 社区 Android 客户端
  18. font-face 跨域解决
  19. Git小抄
  20. lock与sychronized关键字

热门文章

  1. Ognl 语法基础教程
  2. Python 发送邮件 and 编辑Excel
  3. Java Objective-C AOP
  4. MySQL面试题及答案整理,史上最全!
  5. 一个简单便捷的树形显示Ztree
  6. 在Asp.Net Core MVC 3.0 视图运行时编译
  7. [Cocos Creator]安卓上微信小游戏加载到100%就进不去了
  8. springMVC执行流程及架构
  9. 安装fastnlp
  10. 使用 Go 语言徒手撸一个负载均衡器