首页 > php教程 > php手册 > 正文

PHP手机号码归属地查询代码(API接口/mysql)

WBOY
发布: 2016-06-13 10:01:19
原创
1079 人浏览过

文章来介绍一下关于手机号码归属地实现方法,我们可以利用api接口与mysql php来实例有需要的同学看看。

 

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

最新手机号码数据库下载地址:http://www.bKjia.c0m/down/phone-number-database.rar

PHP MYSQL手机号码归属地查询实现方法
通过上面的介绍,我们已经有了自己的MYSQL数据表。这个表结构很简单:ID(序号),code(区号),num(手机号码段),cardtype(手机卡类型),city(手机号码归属地)。注意,这个表存储数据量很大,应当根据你的sql查询语句,建立合适的索引字段,以提高查询效率。
1)获取手机号码归属地,我们只需要通过判断手机号码段归属地即可。主要通过以下函数实现,其中GetAlabNum、cn_substr、str_replace都是字符串操作函数,$dsql是数据库操作类。

 代码如下 复制代码
function GetTelphone($tel)
 代码如下 复制代码
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 `dede_tel` where code='$tel' group by code ");
 }
 else
 {
  $tel = cn_substr($tel, 7);
  $row = $dsql->GetOne(" Select num,city as dd from `dede_tel` where num='$tel' ");
 }
 $city = $row['dd'];
 if($city)
 {
  $city = str_replace("省", "-", $city);
  $city = str_replace("市", "", $city);
  $city = "
[".$city."]";
  return $city;
 }
}
{  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 `dede_tel` where code='$tel' group by code ");  }  else  {   $tel = cn_substr($tel, 7);   $row = $dsql->GetOne(" Select num,city as dd from `dede_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的支持。

if (isset($_GET['number'])) {
 代码如下
 代码如下 复制代码
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;
}
}
?>

手机号码:
复制代码

header(“Content-Type:text/html;charset=utf-8″);
$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手机号码归属地查询这个会慢很多,毕竟要通过第三方法数据。
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板