新浪IP库获取IP详细地址
- class Tool{
- /**
- * IP 所有権を取得 (Sina IP ライブラリ)
- *
- * @param $ip String IP アドレス: 112.65.102.16
- * @return Array
- */
- static public function getIpCity($ip)
- {
- $ip = preg_replace("/s/ ","",preg_replace("/rn/","",$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("/"県":"(.*)"/Uis",$ipJson, $match2);
- preg_match("/"市":"(.*)"/Uis",$ipJson , $match3);
- return array(
- 'country'=>self::ucode2zh($match1[1]), // 国家
- 'province'=>self::ucode2zh($match2[1]), // 省
- 'city'=>self::ucode2zh($match3[1]) // 城市
- );
- }
-
- /**
- *情報を取得するためのCurlメソッド
- */
- 静的パブリック関数 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);
- $file_content を返します;
- }
-
- /**
- * Unicode エンコーディングを中国語に変換し、変換が失敗した場合は元の文字列を返します
- *
- * @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) ? $コード: $r;
- }
- }
🎷取IP地址类使用例
$ipStr = Tool::getIpCity('112.65.102.16');print_r($ipStr); - #返還结果
- Array ( [国] => 中国 [省] => 上海 [都市] => 上海 )
-
-
- 复制代码
-
|