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系列学习之日期函数使用介绍
Aug 18 PHP
解析PHP提交后跳转
Jun 23 PHP
php curl post 时出现的问题解决
Jan 30 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
5款适合PHP使用的HTML编辑器推荐
Jul 03 PHP
php生成验证码函数
Oct 20 PHP
yii,CI,yaf框架+smarty模板使用方法
Dec 29 PHP
浅析Laravel5中队列的配置及使用
Aug 04 PHP
php  单例模式详细介绍及实现源码
Nov 05 PHP
PHP中call_user_func_array回调函数的用法示例
Nov 26 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
Mar 02 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日历程序
2006/12/06 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
Knockoutjs 学习系列(一)ko初体验
2016/06/07 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
Python实现的RSS阅读器实例
2015/07/25 Python
Python中函数及默认参数的定义与调用操作实例分析
2017/07/25 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python 字符串与数字输出方法
2018/07/16 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
Python计算信息熵实例
2020/06/18 Python
HTML5去掉输入框type为number时的上下箭头的实现方法
2020/01/03 HTML / CSS
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
新电JAVA笔试题目
2014/08/31 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
人事行政经理岗位职责
2014/06/18 职场文书
2015年调度员工作总结
2015/04/30 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
2016年离婚协议书范文
2016/03/18 职场文书