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设计聊天室步步通
Oct 09 PHP
PHP版自动生成文章摘要
Jul 23 PHP
php 字符转义 注意事项
May 27 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
php实现图片文件与下载文件防盗链的方法
Nov 03 PHP
php中解析带中文字符的url函数分享
Jan 20 PHP
php实现简单的上传进度条
Nov 17 PHP
PHP读书笔记整理_结构语句详解
Jul 01 PHP
php生出随机字符串
Jul 06 PHP
PHP实现动态获取函数参数的方法示例
Apr 02 PHP
php反射学习之依赖注入示例
Jun 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 高级课程笔记 面向对象
2009/06/21 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
CCPry JS类库 代码
2009/10/30 Javascript
js select常用操作控制代码
2010/03/16 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
JS/Jquery判断对象为空的方法
2015/06/11 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
详解Vue单元测试Karma+Mocha学习笔记
2018/01/31 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
详解js获取video任意时间的画面截图
2019/04/17 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Postman内建变量常用方法实例解析
2020/07/28 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
python中的计时器timeit的使用方法
2017/10/20 Python
python xpath获取页面注释的方法
2019/01/14 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
使用python接入微信聊天机器人
2020/03/31 Python
树莓派极简安装OpenCv的方法步骤
2019/10/10 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
点菜员岗位职责范本
2014/02/14 职场文书
实习护士自荐信
2014/06/21 职场文书
2014年教育实习工作总结
2014/11/22 职场文书