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 "查询不到";
}
} 最佳答案