php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
[導讀]這篇文章主要介紹了PHP基于新浪IP庫獲取IP詳細地址的方法,涉及php正則、curl及編碼轉(zhuǎn)換相關(guān)操作技巧
本文實例講述了PHP基于新浪IP庫獲取IP詳細地址的方法。代碼如下<?php
class?Tool{
/**
*?獲取IP的歸屬地(?新浪IP庫?)
*
*?@param?$ip?String????IP地址:112.65.102.16
*?@return?Array
*/
static?public?function?getIpCity($ip)
{
$ip?=?preg_replace("/s/","",preg_replace("/
/","",$ip));
$link?=?"http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=".$ip."&t=".time();
$ipJson?=?self::httpCurl($link);
preg_match("/"country":"(.*)"/Uis",$ipJson,?$match1);
preg_match("/"province":"(.*)"/Uis",$ipJson,?$match2);
preg_match("/"city":"(.*)"/Uis",$ipJson,?$match3);
return?array(
'country'=>self::ucode2zh($match1[1]),?//?國家
'province'=>self::ucode2zh($match2[1]),?//?省
'city'=>self::ucode2zh($match3[1])???//?城市
);
}
/**
*?Curl方式獲取信息
*/
static?public?function?httpCurl($url)
{
$curl_handle?=?curl_init();
curl_setopt($curl_handle,?CURLOPT_URL,?$url);
curl_setopt($curl_handle,?CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,?CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl_handle,?CURLOPT_FAILONERROR,1);
$file_content?=?curl_exec($curl_handle);
curl_close($curl_handle);
return?$file_content;
}
/**
*?將unicode編碼轉(zhuǎn)化為中文,轉(zhuǎn)化失敗返回原字符串
*
*?@param?$code?String???unicode編碼
*?@return?String
*/
static?public?function?ucode2zh($code)
{
$temp?=?explode('u',$code);
$rslt?=?array();
array_shift($temp);
foreach($temp?as?$k?=>?$v)
{
$v?=?hexdec($v);
$rslt[]?=?''?.?$v?.?';';
}
$r?=?implode('',$rslt);
return?empty($r)???$code?:?$r;
}
}
獲取IP地址類使用實例<?php
$ipStr?=?Tool::getIpCity('112.65.102.16');
print_r($ipStr);
返回結(jié)果Array?(?[country]?=>?中國?[province]?=>?上海?[city]?=>?上海?)PS:注意查詢量大時,sina會不會屏蔽你的問題
總結(jié)
以上是生活随笔為你收集整理的php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php在html中生成option,ph
- 下一篇: php 数组的格式,PHP文件格式数组