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和XSL stylesheets转换XML文档
Oct 09 PHP
用php写的serv-u的web申请账号的程序
Oct 09 PHP
PHP5新特性: 更加面向对象化的PHP
Nov 18 PHP
php 中的str_replace 函数总结
Apr 27 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
Mar 24 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
apache php模块整合操作指南
Nov 16 PHP
Laravel 5框架学习之表单
Apr 08 PHP
php通过文件头判断格式的方法
May 28 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
php二维码生成以及下载实现
Sep 28 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 多维数组排序实现代码
2009/08/05 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
2017/08/03 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
php获取微信openid方法总结
2019/10/10 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
深入浅出讲解ES6的解构
2016/08/03 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
简单实现jquery隔行变色
2017/11/09 jQuery
jQuery封装animate.css的实例
2018/01/04 jQuery
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
Python中turtle作图示例
2017/11/15 Python
python实现自主查询实时天气
2018/06/22 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python中请不要再用re.compile了
2019/06/30 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
python 基于opencv实现图像增强
2020/12/23 Python
python自动生成证件号的方法示例
2021/01/14 Python
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
公司聘任书模板
2014/03/29 职场文书
有关爱国演讲稿
2014/05/07 职场文书
单位单身证明样本
2014/10/11 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
工程移交协议书
2016/03/24 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
go语言中fallthrough的用法说明
2021/05/06 Golang