免费手机号码归属地查询

/**
 * 手机号码归属地查询
 * @param $tel
 * @return string
 */
function getLocation($tel)
{
    // 过滤参数
    if ( !isPhoneNumber($tel) ) return ['code'=>200,'status'=>false,'msg'=>'Cell phone number error!'];

    // 请求地址
    $url = 'http://mobsec-dianhua.baidu.com/dianhua_api/open/location?tel='.$tel;

    // 发起请求
    //$res = file_get_contents($url);
    $res = curlRequest($url,'','GET');

    if ( $res['code'] !== 200 ) return ['code'=>$res['code'],'status'=>false,'msg'=>$res['responseHeader']['msg']];// 判断请求是否成功

    $data = $res['response'][$tel];// 接收返回值

    if ( !$data ) return ['code'=>200,'status'=>false,'msg'=>'API Exception!'];// 返回值为空

    $response['province'] = $data['detail']['province'];        // 归属地
    $response['city'] = $data['detail']['area'][0]['city'];   // 城市
    $response['service'] = $data['detail']['operator'];     // 运行商
    $response['fullname'] = $data['location'];            // 运行商全称

    return ['code'=>200,'status'=>true,'data'=>$response];
}

/**
 * 手机号码格式验证
 * @param $tel
 * @return bool
 */
function isPhoneNumber($tel)//手机号码正则表达试
{
    return (preg_match("/0?(13|14|15|17|18|19)[0-9]{9}/",$tel))?true:false;
}

/**
 * 发起CURL请求
 * @param string $url 请求地址
 * @param string $data 请求数据
 * @param string $method 请求方式
 * @return array 一维数组
 */
function curlRequest($url,$data = '',$method = 'POST')
{
    $ch = curl_init(); //初始化CURL句柄
    curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); //设为TRUE把curl_exec()结果转化为字串,而s不是直接输出
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //设置请求方式

    curl_setopt($ch,CURLOPT_HTTPHEADER,array("X-HTTP-Method-Override: $method"));//设置HTTP头信息
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置提交的字符串
    $document = curl_exec($ch);//执行预定义的CURL
    $code = curl_getinfo($ch,CURLINFO_HTTP_CODE); //获取HTTP请求状态码~
    curl_close($ch);

    $document = json_decode(removeBOM($document),true);
    $document['code'] = $code;

    return $document;
}

/**
 * 检测并移除 BOM 头
 * @param string $str 字符串
 * @return string 去除BOM以后的字符串
 */
function removeBOM($str = '')
{
    if (substr($str, 0,3) == pack("CCC",0xef,0xbb,0xbf)) {
        $str = substr($str, 3);
    }
    return $str;
}

echo "<pre>";
var_dump( getLocation('18888888888') );exit();
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值