PHP正则验证Email的方法


Posted in PHP onJune 15, 2015

本文实例讲述了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] == '.' || $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;
}
?>
PHP 相关文章推荐
php方法调用模式与函数调用模式简例
Sep 20 PHP
深入解析php中的foreach问题
Jun 30 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php mb_substr()函数截取中文字符串应用示例
Jul 29 PHP
php获取随机数组列表的方法
Nov 13 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
php技巧小结【推荐】
Jan 19 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
自制PHP框架之路由与控制器
May 07 PHP
php 防护xss,PHP的防御XSS注入的终极解决方案
Apr 01 PHP
详解PHP用mb_string处理windows中文字符
May 26 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 #PHP
PHP检测用户语言的方法
Jun 15 #PHP
php实现求相对时间函数
Jun 15 #PHP
php数组随机排序实现方法
Jun 13 #PHP
隐性调用php程序的方法
Jun 13 #PHP
PHP获取数组的键与值方法小结
Jun 13 #PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 #PHP
You might like
PHP4.04简明安装
2006/10/09 PHP
PHP5.4中json_encode中文转码的变化小结
2013/01/30 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
详解页面滚动值scrollTop在FireFox与Chrome浏览器间的兼容问题
2015/12/03 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
python字典多条件排序方法实例
2014/06/30 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
在Django中创建第一个静态视图
2015/07/15 Python
Python中常用信号signal类型实例
2018/01/25 Python
Django中的Model操作表的实现
2018/07/24 Python
python保存网页图片到本地的方法
2018/07/24 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
Python3 max()函数基础用法
2019/02/19 Python
利用Python半自动化生成Nessus报告的方法
2019/03/19 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
Python猴子补丁知识点总结
2020/01/05 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
什么是GWT的Entry Point
2013/08/16 面试题
校园学雷锋活动月总结
2014/03/09 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
九九重阳节标语
2014/10/07 职场文书
行为规范主题班会
2015/08/13 职场文书
MySQL分库分表与分区的入门指南
2021/04/22 MySQL