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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
php 获取select下拉列表框的值
May 08 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
php算开始时间到过期时间的相隔的天数
Jan 12 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
Nov 21 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
PHP类的特性实例分析
Sep 28 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
PHP的简单跳转提示的实现详解
Mar 14 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
php中mysql模块部分功能的简单封装
2011/09/30 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
javascript 数组操作详解
2015/01/29 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
python实现最大优先队列
2019/08/29 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
PyCharm取消波浪线、下划线和中划线的实现
2020/03/03 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
简单了解python列表和元组的区别
2020/05/14 Python
Django+Celery实现动态配置定时任务的方法示例
2020/05/26 Python
猫途鹰英国网站:TripAdvisor英国(旅游社区和旅游评论)
2016/08/30 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
thinkphp5 redis缓存新增方法实例讲解
2021/03/24 PHP
加工操作管理制度
2014/01/19 职场文书
幼师辞职信怎么写
2015/02/27 职场文书
干部考核工作总结2015
2015/07/24 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
Flask response响应的具体使用
2021/07/15 Python
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技