西安做网站_西安网站建设公司_西安网页制作_西安网页设计_西安网站制作设计公司

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8277|回复: 1

PHP正则判断手机号码

[复制链接]
发表于 2012-11-15 11:13:07 | 显示全部楼层 |阅读模式
PART I
移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
联通:130、131、132、152、155、156、185、186
电信:133、153、180、189、(1349卫通)
PART II
顺便记录一下其它电话号码方面的知识。
以前电信移动邮政还没有分家,邮电资源是邮电部(现信息产业部)统一调度的。在分配号段的时候,做了一些细致的规划,大体是这样:
10开头,电信服务号码,如103国际半自动挂号,108国际对方付费电话,1000电信服务中心,1001联通服务中心等等。
11开头,赋予特种服务号码,如110匪警,111电信内部测试,112报修,113、115国内人工长途挂号,114查号台,116国内人工长途查询,117报时,119火警等,12开头,赋予民用特殊号码,如120(医院),121(天气预报),122交通事故告警,126、127、128、129寻呼台(BP机时代)。
其他的特殊号段号码有:
16,声讯类,如160中国电信工人信息服务接入码,166语音信箱业务,167吉通计算机互联网业务接入码,168声讯服务,中国电信公众多媒体网接入码等
17,长途电话服务,如170国内长途全自动话费查询台,173国内立接制长途半自动挂号台,176国内长途半自动查询台,177国内长途半自动班长台,179IP语音服务接入码等
18,部分服务台,如180邮政服务,184邮政编码查询接入码,185国家邮xxx电话信息服务接入码,186移动服务中心,188固定电话交费台,189中国电信业务受理特服台等。
19,寻呼接入,191联通无线电人工寻呼接入码,192联通无线电自动寻呼接入码等等
20,30,电话卡服务
另外,8、9开头的号段部分也作电信及民用服务号码
以上号码均作分配,内容太多未详细列出,部分号码目前已经升级,如电信服务台,天气预报,邮政服务台等等。
PART III
有了PART I部分的知识我们就开始写规则了。代码符上
$db = new db();
$db->connect($db_config);
//选择字段
$selectFields = 'mobile';
$rows = $db->row_select('fw_customer',$where,0,$selectFields,'id','ASC');
$regex = "/13[0-9]{9}|15[0|1|2|3|5|6|7|8|9]\d{8}|18[0|5|6|7|8|9]\d{8}/";
$mc=0;
if($rows){
    foreach($rows as $row)
    {
  preg_match_all($regex,$row['mobile'], $phones);
   if($phones){
    for($i=0;$i<count($phones[0]);$i++){
     echo $phones[0][$i] ."\r\n";
     $mc++;
    }
   }
    }
}
echo "共{$mc}号码OK!";
以上是做了一个分析客户表中字段手机号码的提取和输出代码片断。

方法二:
验证一般是把web前端和php的后端结合起来的,前端一般用javascript验证,后端就用php了。
这个例子中我把前端和后端的代码都贴出来,方便以后查看。
前端代码我使用jquery.validate.js,代码如下:

JavaScript代码<script type="text/javascript">   $(document).ready(function() {        $("#smForm").validate({            rules: {                    smMobilePhone: {                        required: true,                        digits:true,                        range:[13000000000,18999999999]                    }            },            messages: {                smMobilePhone: {                        required: "您没有填写手机号码",                        digits: "手机号码格式不对",                        range: "手机号长度或者格式不对",                    }            },            preErrs : {                           }        });   });   </script>  
这只是一个不精确的验证,只能大概验证到一个范围而已,所以重点还在后面。
PHP代码
$mobilephone=trim($_POST["smMobilePhone"]);   //手机号码的正则验证   if(preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/",$mobilephone)){       //验证通过          }else{       //手机号码格式不对          } 代码3如下
//----------------------------------------代码如下

$mail="13846455417";

//判断手机号码是否正确
if(eregi("^13[0-9]{9}|15[0-9]{9}$",$mail))
{
echo "OK";
}
else
{
echo "False";
}

//----------------------------------------代码如下
西安网站建设 | 西安做网站 —— 剑锋所指 所向披靡!
回复

使用道具 举报

 楼主| 发表于 2012-11-15 14:09:18 | 显示全部楼层
  1. function DetectionMobile($mobilephone)
  2. {
  3.    return preg_match("/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|18[0-9]{9}$/", $mobilephone);                                                                                                                                                                                                                                                                               
  4. }

  5. function checkQQ($qq){return  preg_match("/^[1-9]\d{4,11}$/",$qq);}
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西安网站建设

GMT+8, 2024-4-19 15:10 , Processed in 0.043700 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表