首先我们介绍使用自己的数据库查询多个手机号码, 那还是建议你拥有一个自己的的手机号码数据库正常情况下, 只是满足一般查询的话, 你不需要去购买专业版的手机号码数据库, 增加无谓成本我免费为你提供一个 ACCESS 数据库, 包含 17 万多条数据, 常用的 130-139150-159 以及 180-189 开头手机号码段都在其中, 你可以借助数据库工具轻松地将它转换成 MYSQL 或其它版本数据库
最新手机号码数据库下载地址: http://xiazai.jb51.net/201209/yuanma/phone-number-database-jb51.rar
PHP+MYSQL 手机号码归属地查询实现方法
通过上面的介绍, 我们已经有了自己的 MYSQL 数据表这个表结构很简单: ID(序号),code(区号),num(手机号码段),cardtype(手机卡类型),city(手机号码归属地) 注意, 这个表存储数据量很大, 应当根据你的 sql 查询语句, 建立合适的索引字段, 以提高查询效率
1) 获取手机号码归属地, 我们只需要通过判断手机号码段归属地即可主要通过以下函数实现, 其中 GetAlabNumcn_substrstr_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 `z_tel` where code='$tel'group by code");
- }
- else
- {
- $tel = cn_substr($tel, 7);
- $row = $dsql->GetOne("Select num,city as dd from `z_tel` where num='$tel' ");
- }
- $city = $row['dd'];
- if($city)
- {
- $city = str_replace("省", "-", $city);
- $city = str_replace("市", "", $city);
- $city = "[".$city."]";
- return $city;
- }
- }
api 实现方法, 这里不需要自己的数据库但有限制了
主要使用 curl 实现, 需要开启 php 对 curl 的支持
代码如下:
- header(Content - Type: text / html; charset = utf - 8);
- if (isset($_GET['number'])) {
- $url = http: //webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo';
- $number = $_GET['number'];
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, mobileCode = {
- $number
- } & userId = );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- $data = curl_exec($ch);
- curl_close($ch);
- $data = simplexml_load_string($data);
- if (strpos($data, http: //')) {
- echo '手机号码格式错误!';
- } else {
- echo $data;
- }
- } ? >
手机号码:
与 php mysql 手机号码归属地查询这个会慢很多, 毕竟要通过第三方法数据
来源: https://www.php1.cn/detail/php-42289a3925.html