php获取ip地址所在的地理位置的实现

Posted php泽林笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php获取ip地址所在的地理位置的实现相关的知识,希望对你有一定的参考价值。

1,通过腾讯或者新浪提供的接口来获取(新浪和腾讯类似)

<?php 
   function getIPLocation($queryIP){ 
    $url = ‘http://ip.qq.com/cgi-bin/searchip?searchip1=‘.$queryIP; 

  //如果是新浪,这里的URL是:‘http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=‘.$queryIP; 
    $ch = curl_init($url); 
    curl_setopt($ch,CURLOPT_ENCODING ,‘gb2312‘); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 
    $result = curl_exec($ch); 
    $result = mb_convert_encoding($result, "utf-8", "gb2312"); // 编码转换,否则乱码 
 //   print_r($result);
    curl_close($ch); 
    preg_match("@<span>(.*)</span></p>@iU",$result,$ipArray); //匹配标签,抓取查询到的ip地址(以数组的形式返回)
    $location = $ipArray[0]; 
    return $location; 



$ip = getIPLocation(‘111.186.116.208‘);//将ip传入进来
print_r($ip);//打印结果
?>

如果把提交的$result打印出来的话,显示如下:

技术分享

最后显示的结果为中国上海市  教育

 

2,通过淘宝提供的接口

<?php
header("Content-type:text/html;charset=utf-8");//设置编码格式
function getCity($ip)
{
   $url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
   print_r(file_get_contents($url));
   $ipinfo=json_decode(file_get_contents($url)); 
   if($ipinfo->code==‘1‘){
       return false;
   }
   $city = $ipinfo->data->region.$ipinfo->data->city;
   return $city; 
}
 
// example
print_r(getCity("111.186.116.208"));
?>

打印出-打开的url地址后,可以发现,它是以json格式返回数据的,因此需要进行解码(json_decode)

技术分享

最后得到的结果为:上海市上海市

 

参考文章:

PHP淘宝IP数据获取用户IP及地理位置                     http://www.111cn.net/phper/php/48159.htm

使用PHP+淘宝IP地址库接口获得IP所属地理位置  http://www.ttlsa.com/php/to-obtain-ip-location-using-the-php-taobao-ip-address-database-interface/

PHP获取IP地址所在的地理位置                                 http://jingyan.baidu.com/article/154b46315e74af28ca8f4137.html

以上是关于php获取ip地址所在的地理位置的实现的主要内容,如果未能解决你的问题,请参考以下文章

vue 中获取客户端所在ip及ip所属的地理位置

php获取了ip地址,用php怎么获取ip的地理位置?请大虾赐教!

使用 PHP 根据 IP 地址获取位置和区域

php怎么实现定位?除了ip

php获取用户真实ip地址与地理位置

PHP 从 IP 地址获取位置 MaxMind GEOIP