ThinkPHP手机归属地使用

浏览:1311 发布日期:2016/03/18 分类:技术分享 关键字: ThinkPHP手机归属地使用
    public function getProvince(){

        $tel =I("post.tel",'',"htmlspecialchars");

        $url = 'http://virtual.paipai.com/extinfo/GetMobileProductInfo?amount=10000&mobile='.$tel;
        //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, $url);
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HTTPHEADER, 1);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //执行命令
        $mesg = trim(curl_exec($curl));
        //关闭URL请求
        curl_close($curl);
        //显示获得的数据
        $mesg = iconv("GBK", "UTF-8", $mesg);
        // )出现的位置
        $end = strpos($mesg,')')-3;
        //截断数据
        $i = substr($mesg,2,$end);

        //数组拆分
        $arr = explode(',',$i);
        $nw = array();
        foreach($arr as $v){
            $a= explode(':',$v);
            $nw[$a[0]] = trim($a[1],"'");
        }
        //归属地格式为:广东 广州 中国移动
        $data['province'] = $nw['province'].' '.$nw['cityname'].' '.$nw['isp'];

        $this->ajaxReturn($data['province']);

    }
要异步检测手机归属地,使用paipai 的API, GET请求返回的JSON数据(GBK编码,而且有一条注释代码),后续需要自己处理,这样就可以详细到手机号码的城市。 可供大家使用,代码还需要优化。若有大神能够优化这份代码,请贴出。/**
 * 返回手机归属地
 * 
 * @param
 *            $tel
 * @return string
 */
function Province($tel = '13800138000') {
    $ch = curl_init();
    $url = 'http://apis.baidu.com/apistore/mobilephoneservice/mobilephone?tel='.$tel;
    // apikey 需要额外申请
    $header = array(
            'apikey:自己申请哟'
    );
    // 添加apikey到header
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // 执行HTTP请求
    curl_setopt($ch, CURLOPT_URL, $url);
    $res = curl_exec($ch);
    header("Content-type:text/html;charset=utf-8");
    $result = json_decode($res, true);
    
    if ($result['errMsg'] == 'success') {
        foreach ($result['retData'] as $k => $v) {
            $arr[$k] = $v;
        }
        return $arr['province'].' '.$arr['carrier'];
    } else {
        return "查询不到";
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>