目前比较常用的根据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 ); |