歷來沒有用過api,都不知道怎麼得到api的數據,跟着demo,而後修改,終於實現了手機號碼查詢的功能,代碼和說明很全,你們試試。php
<?php
/**
* Created by jianqingwang
* User: Administrator
* Date: 2016/9/10 0010
* Time: 22:49
* 查詢手機歸屬地
*/
header("Content-type: text/html; charset=utf-8");
//傳入查詢的電話
//$phoneNum=$_GET['phoneNum'];
$phoneNum='18807457777';
//查詢電話號碼歸屬地函數,你們能夠直接拿來用
function checkPhone($phoneNum){
//下面開始百度的demo
$ch = curl_init();
//或者採用這種方式: $url = "http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=$phoneNum";
$url = 'http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone='.$phoneNum;
$header = array(
'apikey:密匙帳號',//這個是個人密匙帳號,各位能夠到百度官網申請
//百度api官方http://apistore.baidu.com/astore/toolshttpproxy?apiId=usu9zw&isAworks=1
);
// 添加apikey到header
curl_setopt($ch, CURLOPT_HTTPHEADER , $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 執行HTTP請求
curl_setopt($ch , CURLOPT_URL , $url);
//百度api的demo結束
//對返回的數據進行轉碼,確保數據爲utf-8
$data=iconv('GB2312','UTF-8', curl_exec($ch));
//對返回的數據轉碼,把json轉爲數組,後面的true若是沒加上會變成對象,各位能夠先打印輸出下,看下它的結構
$res = json_decode(curl_exec($ch),true);
$phone=$res['retData']['phone'];
$prefix=$res['retData']['prefix'];
$supplier=$res['retData']['supplier'];
$province= $res['retData']['province'];
$city= $res['retData']['city'];
$suit=$res['retData']['suit'];
//把查詢的數據轉爲數組返回
$checkData[0]=$phone;//查詢的電話號碼
$checkData[1]=$prefix;//卡的號段,能夠存起來之後數據大了能夠直接採用號段來查詢電話歸屬地
$checkData[2]=$supplier;//卡的運營商,如中國移動
$checkData[3]=$province;//卡的歸屬省份
$checkData[4]=$city;//卡的歸屬城市
$checkData[5]=$suit;//卡的類型,好比:157卡
return $checkData;//返回查詢後的數據,爲了方便返回多個數據,採用數組
}
$myPhoneData=checkPhone($phoneNum);
echo $myPhoneData[0]."歸屬號段".$myPhoneData[1]."運營商".$myPhoneData[2]."歸屬省份".$myPhoneData[3]."歸屬城市".$myPhoneData[4]."卡的類型".$myPhoneData[5];;//輸出查詢結果
?>
效果展現:html
有時間我會考慮寫個帶數據庫的版本。數據庫