PHP获得地理定位
作者:jao 发布于:2012-12-16 12:49 分类:PHP教程
01 |
<?php |
02 |
$ip = $_SERVER [ 'REMOTE_ADDR' ]; |
03 |
geoCheckIP( $ip ); |
04 |
|
05 |
// print_r(geoCheckIP($ip)); |
06 |
//Array ( [domain] => dslb-094-219-040-096.pools.arcor-ip.net [country] => DE - Germany [state] => Hessen [town] => Erzhausen ) |
07 |
|
08 |
//Get an array with geoip-infodata |
09 |
function geoCheckIP( $ip ) |
10 |
{ |
11 |
//check, if the provided ip is valid |
12 |
if (!filter_var( $ip , FILTER_VALIDATE_IP)) |
13 |
{ |
14 |
throw new InvalidArgumentException( "IP is not valid" ); |
15 |
} |
16 |
|
17 |
//contact ip-server |
18 |
$response =@ file_get_contents ( 'http://www.netip.de/search?query=' . $ip ); |
19 |
if ( empty ( $response )) |
20 |
{ |
21 |
throw new InvalidArgumentException( "Error contacting Geo-IP-Server" ); |
22 |
} |
23 |
|
24 |
//Array containing all regex-patterns necessary to extract ip-geoinfo from page |
25 |
$patterns = array (); |
26 |
$patterns [ "domain" ] = '#Domain: (.*?) #i' ; |
27 |
$patterns [ "country" ] = '#Country: (.*?) #i' ; |
28 |
$patterns [ "state" ] = '#State/Region: (.*?)<br#i' ; |
29 |
$patterns [ "town" ] = '#City: (.*?)<br#i' ; |
30 |
|
31 |
//Array where results will be stored |
32 |
$ipInfo = array (); |
33 |
|
34 |
//check response from ipserver for above patterns |
35 |
foreach ( $patterns as $key => $pattern ) |
36 |
{ |
37 |
//store the result in array |
38 |
$ipInfo [ $key ] = preg_match( $pattern , $response , $value ) && ! empty ( $value [1]) ? $value [1] : 'not found' ; |
39 |
} |
40 |
|
41 |
return $ipInfo ; |
42 |
} |
43 |
|
44 |
?> |
45 |
|
评论:
我的主页统计
- 建站日期:2012-11-26
2012-12-16 13:08