PHP学习笔记:利用百度api实现手机归属地查询

从来没有用过api,都不知道怎么获得api的数据,跟着demo,然后修改,终于实现了手机号码查询的功能,代码和说明很全,大家试试。

<?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];;//输出查询结果
?>

效果展示:

有时间我会考虑写个带数据库的版本。

posted @ 2016-09-23 17:51  简庆旺  阅读(1009)  评论(1编辑  收藏  举报