PHP+MYSQL实现手机号码归属地查询…

时间:2022-12-15 20:58:40


手机号码归属地查询这个概念大家都不陌生吧!像我们在百度搜索框中输入一个正确的手机号码,点击搜索,就会显示这个手机号码的归属地和卡类型,非常方便。今天要为大家说的就是利用PHP+MYSQL的方法来实现手机号码归属地的查询。网上也有很多方法,大多是通过一些提供在线接口的网站或是PHP+纯文本的方法来实现的。

如果只是查询单个手机号码,那推荐你用提供国内手机号码段归属地数据的网站接口来做,简单实现,也不浪费你服务器资源。比如​​MobileCodeWS​​就是不错的选择。

如果是同时或是循环查询多个手机号码,那还是建议你拥有一个自己的的手机号码数据库。正常情况下,只是满足一般查询的话,你不需要去购买专业版的手机号码数据库,增加无谓成本。我免费为你提供一个ACCESS数据库,包含17万多条数据,常用的130-139、150-159以及180-189开头手机号码段都在其中,你可以借助数据库工具轻松地将它转换成MYSQL或其它版本数据库。

​附:最新手机号码数据库免费下载​​ 

进入正题,这两天,应老板要求,需要在PHP+MYSQL开发的一个管理系统中实现以下功能:

1)显示用户的电话号码(手机号或座机号)归属地,便于回访;

2)后台做一个手机号码段添加的功能,便于更新手机号码库。
PHP+MYSQL手机号码归属地查询实现方法

通过上面的介绍,我们已经有了自己的MYSQL数据表。这个表结构很简单:ID(序号),code(区号),num(手机号码段),cardtype(手机卡类型),city(手机号码归属地)。注意,这个表存储数据量很大,应当根据你的sql查询语句,建立合适的索引字段,以提高查询效率。

1)获取手机号码归属地,我们只需要通过判断手机号码段归属地即可。主要通过以下函数实现,其中GetAlabNum、cn_substr、str_replace都是字符串操作函数,$dsql是数据库操作类。



function GetTelphone($tel)
{
global $city,$dsql;
if(isset($tel)) $tel = GetAlabNum(trim($tel));//GetAlabNum函数用于替换全角数字,将可能存在的非法手机号码转换为数字;trim去除多余空格。
else return false;
if(strlen($tel) < 7) return false;
$tel = cn_substr($tel, 11);//先截取11个字符,防止是多个手机号码
//if(!is_numeric($tel)) return false;
if(cn_substr($tel, 1) == "0")//判断手机号码是否以0开头,这种情况可能会是座机号以0开头
{
if(cn_substr($tel, 2) == "01" || cn_substr($tel, 2) == "02") $tel = cn_substr($tel, 3);//3位区号
else $tel = cn_substr($tel, 4);
$row = $dsql->GetOne(" Select code,city as dd from ​​`#@__tel​​` where code='$tel' group by code ");
}
else
{
$tel = cn_substr($tel, 7);
$row = $dsql->GetOne(" Select num,city as dd from ​​`#@__tel​​` where num='$tel' ");
}
$city = $row['dd'];
if($city)
{
$city = str_replace("省", "-", $city);
$city = str_replace("市", "", $city);
$city = "<br /><font color=\"green\">[".$city."]</font>";
return $city;
}
}



2)添加新的手机号码段功能

这个功能就很简单了吧,只是一个简单的表单提交功能,PHP学习最基本的留言簿就是这么做的,随便DOWN一个来参考下即可,就不详细说明了。

以上就是PHP+MYSQL实现手机号码归属地查询的详细办法,有什么不对的地方欢迎补充、交流。