PHP正则验证Email的方法

yipeiwu_com6年前PHP代码库

本文实例讲述了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;
}
?>

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg

希望本文所述对大家的php程序设计有所帮助。

相关文章

php导出excel格式数据问题

解决2个问题:1.身份证之类的文本数据自动转为科学计数法的问题。2.中文乱码的问题 excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以ex...

php文件包含的几种方式总结

php文件包含的几种方式总结

四种语句 PHP中有四个加载文件的语句:include、require、include_once、require_once。 基本语法 require:require函数一般放在PHP脚...

详解PHP的抽象类和抽象方法以及接口总结

PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下: 抽象类: 1、如果一个类中有一个方法是抽象方...

PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解

【PHP Source Code】:复制代码 代码如下:$dbh = new PDO('sqlsrv:server=连接地址;Database=数据库名', 用户名, 密码);try {...

PHP检查端口是否可以被绑定的方法示例

本文实例讲述了PHP检查端口是否可以被绑定的方法。分享给大家供大家参考,具体如下: <?php /** * 检查端口是否可以被绑定 * @author flynet...