PHP根据IP地址获取国家省市县等地区的简单方法

目前比较常用的根据IP地址获取所在地区的API如下有:新浪IP地址获取地区接口、淘宝IP地址获取地区接口。

1、新浪IP地址获取地区接口

http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=

其中传递的参数中format的值,可选的为:json、js

封装函数如下:

$ip = '113.17.174.45';

PHP code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

/**

 * 新浪IP获取地区接口

 * 调用:get_ip_area_sina('113.17.174.45')

 * 返回值:数组:country国家,province省,city市

 */ 

function get_ip_area_sina($ip ''){

    if(empty($ip)){

        return '请输入IP地址';

    }

    $area_info = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip);

    if(empty($area_info)){

        return false;

    }

    $jsonMatches array();  

    preg_match('#\{.+?\}#'$area_info$jsonMatches);

    if(!isset($jsonMatches[0])){

        return false;

    }

    $ipinfo = json_decode($jsonMatches[0], true);

    if(isset($ipinfo['ret']) && $ipinfo['ret'] == 1){

        $ipinfo['ip'] = $ip;

    }else{

        return false;

    }

    return $ipinfo;

}

$data = get_ip_area_sina($ip);

echo $data['country'];

print_r($data);

2、淘宝IP地址获取地区接口

淘宝IP地址库官网地址:http://ip.taobao.com/

http://ip.taobao.com/service/getIpInfo.php?ip=

不过淘宝对访问次数有限制,官网说明如下:

为了保障服务正常运行,每个用户的访问频率需小于10qps。

这里有个 qps 的概念,那么什么是qps呢?

qps是指每秒内查询的次数。如10qps,表示1秒内可执行10次。

封装函数如下:

PHP code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

 * 淘宝IP获取地区接口

 * 调用:get_ip_area_taobao('113.17.174.45')

 * 返回值:数组:country国家,region省,city市

 */ 

function get_ip_area_taobao($ip ''){ 

    if(empty($ip)){

        return '请输入IP地址';

    }

    $area_info = @file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);

    $area_info = json_decode($area_info, true);

    if(isset($area_info['code']) && $area_info['code'] == 0){

        $ipinfo $area_info['data'];

    }else{

        return false;

    }

    return $ipinfo;

}

$data = get_ip_area_taobao($ip);

echo $data['country'];

print_r($data);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值