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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
PHP文件打开、关闭、写入的判断与执行代码
May 24 PHP
js和php邮箱地址验证的实现方法
Jan 09 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
PHP数组和explode函数示例总结
May 08 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 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 飞信好友免费短信API接口开源版
2010/07/22 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
js加解密 脚本解密
2008/02/22 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
js实现微信分享代码
2020/10/11 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
@ResponseBody 和 @RequestBody 注解的区别
2017/03/08 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
利用python获取当前日期前后N天或N月日期的方法示例
2017/07/30 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python读取pdf表格写入excel的方法
2021/01/22 Python
参赛口号
2014/06/16 职场文书
2015年上半年计生工作总结
2015/03/30 职场文书
2015年小学体育工作总结
2015/05/22 职场文书