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 相关文章推荐
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
Jun 05 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP实现事件机制的方法
Jul 10 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
PHP多维数组排序array详解
Nov 21 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
yii2多图上传组件的使用教程
May 10 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 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预定义变量使用帮助(带实例)
2013/10/30 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
避免Smarty与CSS语法冲突的方法
2015/03/02 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
兼容IE、firefox以及chrome的js获取时间(getFullYear)
2014/07/04 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[03:36]DOTA2完美大师赛coL战队趣味视频——我演你猜
2017/11/23 DOTA
python简单分割文件的方法
2015/07/30 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
python格式化输出保留2位小数的实现方法
2019/07/02 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Python实现手势识别
2020/10/21 Python
python打包生成so文件的实现
2020/10/30 Python
技校生自我鉴定
2013/12/08 职场文书
教师学习培训邀请函
2014/02/04 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
前处理班长职位说明书
2014/03/01 职场文书
十八大演讲稿
2014/05/22 职场文书
公司任命书模板
2014/06/06 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
党员活动总结
2015/02/04 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
Python基础之元类详解
2021/04/29 Python