php ip获取邮政编码,地理位置-如何从IP地址确定邮政编码和城市?
以下是我發現的使用[http://ipinfodb.com/ip_locator.php]來獲取其信息的代碼段的修改版本。 請記住,您也可以向他們申請API密鑰,并直接使用API來獲取您認為合適的信息。 如您所見[http://ipinfodb.com/ip_location_api.php,]他們提供了從PHP到JavaScript到ASP.Net的所有示例。 如前所述,下面不需要密鑰,因為它可以拉動其公共頁面,而Regex可以通過該頁面獲取指定的信息。 鑰匙是免費的。
片段
function detect_location($ip=NULL, $asArray=FALSE) {
if (empty($ip)) {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; }
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; }
else { $ip = $_SERVER['REMOTE_ADDR']; }
}
elseif (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost') {
$ip = '8.8.8.8';
}
$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$i = 0; $content; $curl_info;
while (empty($content) && $i < 5) {
$ch = curl_init();
$curl_opt = array(
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_TIMEOUT => 1,
CURLOPT_REFERER => 'http://' . $_SERVER['HTTP_HOST'],
);
if (isset($_SERVER['HTTP_USER_AGENT'])) $curl_opt[CURLOPT_USERAGENT] = $_SERVER['HTTP_USER_AGENT'];
curl_setopt_array($ch, $curl_opt);
$content = curl_exec($ch);
if (!is_null($curl_info)) $curl_info = curl_getinfo($ch);
curl_close($ch);
}
$araResp = array();
if (preg_match('{
City : ([^}i', $content, $regs)) $araResp['city'] = trim($regs[1]);if (preg_match('{
State/Province : ([^}i', $content, $regs)) $araResp['state'] = trim($regs[1]);if (preg_match('{
Country : ([^if (preg_match('{
Zip or postal code : ([^}i', $content, $regs)) $araResp['zip'] = trim($regs[1]);if (preg_match('{
Latitude : ([^}i', $content, $regs)) $araResp['latitude'] = trim($regs[1]);if (preg_match('{
Longitude : ([^}i', $content, $regs)) $araResp['longitude'] = trim($regs[1]);if (preg_match('{
Timezone : ([^}i', $content, $regs)) $araResp['timezone'] = trim($regs[1]);if (preg_match('{
Hostname : ([^}i', $content, $regs)) $araResp['hostname'] = trim($regs[1]);$strResp = ($araResp['city'] != '' && $araResp['state'] != '') ? ($araResp['city'] . ', ' . $araResp['state']) : 'UNKNOWN';
return $asArray ? $araResp : $strResp;
}
使用
detect_location();
// returns "CITY, STATE" based on user IP
detect_location('xxx.xxx.xxx.xxx');
// returns "CITY, STATE" based on IP you provide
detect_location(NULL, TRUE); // based on user IP
// returns array(8) { ["city"] => "CITY", ["state"] => "STATE", ["country"] => "US", ["zip"] => "xxxxx", ["latitude"] => "xx.xxxxxx", ["longitude"] => "-xx.xxxxxx", ["timezone"] => "-07:00", ["hostname"] => "xx-xx-xx-xx.host.name.net" }
detect_location('xxx.xxx.xxx.xxx', TRUE); // based on IP you provide
// returns array(8) { ["city"] => "CITY", ["state"] => "STATE", ["country"] => "US", ["zip"] => "xxxxx", ["latitude"] => "xx.xxxxxx", ["longitude"] => "-xx.xxxxxx", ["timezone"] => "-07:00", ["hostname"] => "xx-xx-xx-xx.host.name.net" }
總結
以上是生活随笔為你收集整理的php ip获取邮政编码,地理位置-如何从IP地址确定邮政编码和城市?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧姆龙e5dc温控器_欧姆龙E5DC-C
- 下一篇: 锐捷网络:引领地铁移动互联网快捷交付2.