php查詢IP歸屬地調用免費接口

php調用免費接口查詢IP歸屬地

淘寶查詢接口(較慢)

$url = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
    //用curl發送接收數據
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_ENCODING, 'utf8');
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $location = curl_exec($ch);
    $location = json_decode($location);
    curl_close($ch);
    $ip_location = '';
    if(!empty($location) && $location->code == 0) {
        $ipdata = $location->data;
        //國家
        if ($ipdata->country != "XX") {
            $ip_location = $ip_location . $ipdata->country;
        }
        //地區
        if ($ipdata->region != "XX") {
            $ip_location = $ip_location . $ipdata->region;
        }
        //城市
        if ($ipdata->city != "XX" && $ipdata->city != $ipdata->region) {
            $ip_location = $ip_location . $ipdata->city;
        }
        //縣級
        if ($ipdata->county != "XX" && $ipdata->county != $ipdata->city) {
            $ip_location = $ip_location . $ipdata->county;
        }
        //網絡
        if ($ipdata->isp != "XX" && $ipdata->isp != $ipdata->city) {
            $ip_location = $ip_location . $ipdata->isp;
        }
    }
    return($ip_location);

126接口

 $ch = curl_init();
    $url = 'http://ip.ws.126.net/ipquery';
    $header = array(
        "CLIENT-IP:$ip",
        "X-FORWARDED-FOR:$ip"
    );
    //用curl發送接收數據
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $location = curl_exec($ch);
    curl_close($ch);
    //轉碼
    $location = mb_convert_encoding($location, 'utf-8','GB2312');
    //以“”爲分界符轉換成數組
    $location = explode('"',$location);
    $ip_location = '';
    if ($location && !empty($location[7])){
        $ip_location .= $location[7];
    }
    if ($location && !empty($location[5])){
        $ip_location .= $location[5];
    }
     return $ip_location;

其他接口(這個較上兩種更好用)

$ch = curl_init();
     $url = 'https://whois.pconline.com.cn/ipJson.jsp?ip='.$ip;
     //用curl發送接收數據
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //請求爲https
     curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, false );
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     $location = curl_exec($ch);
     curl_close($ch);
     //轉碼
     $location = mb_convert_encoding($location, 'utf-8','GB2312');
     //var_dump($location);
     //截取{}中的字符串
     $location = substr($location, strlen('({')+strpos($location, '({'),(strlen($location) - strpos($location, '})'))*(-1));
    //將截取的字符串$location中的‘,’替換成‘&’   將字符串中的‘:‘替換成‘=’
     $location = str_replace('"',"",str_replace(":","=",str_replace(",","&",$location)));
     //php內置函數,將處理成類似於url參數的格式的字符串  轉換成數組
     parse_str($location,$ip_location);
     return $ip_location['addr'];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章