PHP學習筆記:利用百度api實現手機歸屬地查詢

歷來沒有用過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

有時間我會考慮寫個帶數據庫的版本。數據庫

相關文章
相關標籤/搜索