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导出oracle库的php代码
Apr 20 PHP
php短域名转换为实际域名函数
Jan 17 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
Apr 12 PHP
探讨方法的重写(覆载)详解
Jun 08 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
Jun 02 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 PHP
php+layui数据表格实现数据分页渲染代码
Oct 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
缅甸的咖啡简史
2021/03/04 咖啡文化
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
vue脚手架及vue-router基本使用
2018/04/09 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python正则抓取网易新闻的方法示例
2017/04/21 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
python实现微信定时每天和女友发送消息
2019/04/29 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
快速了解Python开发环境Spyder
2020/06/29 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
会计毕业生自荐信
2013/11/21 职场文书
事业单位鉴定材料
2014/05/25 职场文书
团党委领导干部党的群众路线教育实践活动个人对照检查材料思想汇
2014/10/05 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
情况说明书格式及范文
2019/06/24 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
PHP基本语法
2021/03/31 PHP
MySQL 十大常用字符串函数详解
2021/06/30 MySQL
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers