PHP验证邮箱与邮箱有效性验证
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-25 23:00:53 浏览: 评论:0
下面我来总结了在php邮箱验证的正则表达式以及还可以checkdnsrr函数来验证你输入的邮箱是否是有效的哦,这样可以更好的过滤到无效邮箱地址哦。
域名由各国文字的特定字符集、英文字母、数字及“-”(即连字符或减号)任意组合而成, 但开头及结尾均不能含有“-”,“-”不能连续出现 。 域名中字母不分大小写。域名最长可达60个字节(包括后缀.com、.net、.org等)。
/^[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?$/i;/内容/i 构成一个不区分大小写的正则表达式
代码如下:
- $email = "tanklo_--vehy@yahoo.com.cn";
- function check_email($email) {
- $pattern_test = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i";
- return preg_match($pattern_test,$email);
- }
- echo check_email($email);
上面的只能简单的验证邮件格式,下面一个更具体验证方法,PHP如何验证,代码如下:
- <?
- //PHP验证邮箱格式的函数
- function valid_email($email) {
- // First, we check that there's one @ symbol, and that the lengths are right
- if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
- // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
- return false;
- }
- // Split it into sections to make life easier
- $email_array = explode("@", $email);
- $local_array = explode(".", $email_array[0]);
- for ($i = 0; $i < sizeof($local_array); $i++) {
- if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~.-]{0,63})|("[^(\|")]{0,62}"))$", $local_array[$i])) {
- return false;
- }
- }
- if (!ereg("^[?[0-9.]+]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
- $domain_array = explode(".", $email_array[1]);
- if (sizeof($domain_array) < 2) {
- return false; // Not enough parts to domain
- }
- for ($i = 0; $i < sizeof($domain_array); $i++) {
- if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
- return false;
- }
- }
- }
- return true;
- }
- //应用示例
- if(!valid_email($myeml)){
- echo"<script>alert('Please enter a valid e-mail address');location.href='javascript:history.back()'</script>";
- break;
- }
- ?>
无意中就发现checkdnsrr函数那里就有了更精妙的例子,分享给大家,代码如下:
- <?php
- function validate_email($email){
- $exp = "^[a-z'0-9]+([._-][a-z'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
- if(eregi($exp,$email)){ //先用正则表达式验证email格式的有效性
- if(checkdnsrr(array_pop(explode("@",$email)),"MX")){//再用checkdnsrr验证email的域名部分的有效性
- return true;
- }else{
- return false;
- }
- }else{
- return false;
- }
- }
- ?>
Tags: 验证 邮箱 有效性验证
相关文章
- ·php 验证手机号码与电话号码正则(2013-11-12)
- ·php验证用户名是否以字母开头与验证密码(2013-11-13)
- ·用PHP来验证Email是否正确(2013-12-10)
- ·日期验证正则表达式(2013-12-11)
- ·php正则表达式验证邮箱(2014-01-05)
- ·php中email邮件地址验证大全集合(2014-01-07)
- ·php 正则验证日期时间格式实例代码(2014-02-28)
- ·php 验证手机号码(2014-06-05)
- ·验证邮箱格式 用户名 url 的php正则表达式(2014-08-02)
- ·php正则中文多种验证方法(2014-08-04)
- ·php正则入门,实习email和URL验证(2014-08-15)
- ·php中文用户名验证代码(2014-08-17)
- ·php FILTER_VALIDATE_FLOAT 浮点数验证(2014-09-19)
- ·php 验证邮箱、url、数字程序代码(2015-04-09)
- ·php用户注册ID验证正则表达式(2015-04-09)
- ·PHP验证Email和IP地址最简单的方法(2015-04-11)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)