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

时间: 2024-10-11 11:39:16

php获取ip地址所在的地理位置的实现的相关文章

获取IP地址

获取本地计算机的IP地址 关键点 WSAStartup The Windows Sockets WSAStartup function initiates use of Ws2_32.dll by a process. int WSAStartup( WORDwVersionRequested, LPWSADATAlpWSAData ); 实现过程 #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") char* 

ARM-Linux配置DHCP自动获取IP地址

备注:内核版本:2.6.30.9busybox版本:1.15.2 PC Linux和开发板Linux的工作用户:root 1. 配置内核:[*] Networking support --->Networking options ---><*> Packet socket<*> Unix domain sockets[*] TCP/IP networking[*] IP: kernel level autoconfiguration[*] IP: DHCP suppor

DHCP获取IP地址过程中捕获的报文—三级网络总结(二)

上一篇文章主要说了一下知识点中的IP地址的考点,这一篇我打算说说DHCP获取IP地址过程中捕获的报文的这个考点,都是自己的理解,有错误欢迎指正. DHCP是应用层协议,UDP是传输层协议,IP是网络层协议,以太网是链路层协议.数据在网络上传输的时候要自顶向下逐层封装的,典型的DHCP过程是这样的: 1:客户机向服务器发送DHCP_DISCOVER报文,申请IP. 2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP. 3:客户机向服务器发送DHCP_REQUEST报文,请求这个

自动设置IP地址和自动获取IP地址bat批处理文件

自动设置IP地址.bat Echo offecho  手动设置IP地址....Netsh interface IP Set Addr "本地连接" Static 192.168.1.8 255.255.255.0 192.168.1.1 1echo  手动设置DNS地址....Netsh interface IP Set dns "本地连接" static 202.106.196.115 primaryecho  手动设置备份DNS地址....Netsh inter

CentOS 7如何设置Linux开机自动获取IP地址

centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33). 2.输入“cd /etc/sysconfig/network-scripts/”按回车键确定,继续输入“ls”按回车键查看文件. 3.输入“vi ifcfg-ens33”并按回车键确定(网卡名称可能不同).亦可在第二步直接输入“cd /etc/sysconfig/

电脑无法获取IP地址

电脑无法获取IP地址 朋友的家里有一个无线路由器,手机可以获取IP地址,但是电脑却一直获取不到IP,尝试的去重启网卡然后重启电脑,重启路由器恢复出厂设置重新配置但都无法解决. 最终的解决办法:netsh winsock reset 在系统中执行这个命令后重新启动电脑问题解决了! netsh winsock reset 作用是重置 Winsock 目录.如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录

PHP获取IP地址及根据IP判断城市实现城市切换或跳转

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: ? <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_

虚拟机Redhat桥接无法获取IP地址

虚拟机Redhat桥接无法获取IP地址 先确认是否同时安装VirtualBox与VMware,本方案仅适用同装两款虚拟机出现的此种故障 报错代码: [[email protected] ~]# ifconfig eth0     Link encap:Ethernet  HWaddr00:0C:29:BD:65:C8 inet6 addr: fe80::20c:29ff:febd:65c8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500

WPF 获取IP地址

List<string> ipList = new List<string>(); foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList) { if (_IPAddress.AddressFamily.ToString() == "InterNetwork") { ipList.Add(_IPAddress.ToString()); } } WPF 获取I