从IP地址查找国家/地区名称

时间:2013-02-07 09:10:48

标签: php ip

$user_ip_address=$_SERVER['REMOTE_ADDR'];

我使用上面的代码找出了ip地址。如何使用这个ip地址查找国家名称?

由于

4 个答案:

答案 0 :(得分:3)

你需要ip 2国家数据库 看这里:http://phpweby.com/software/ip2country

或使用外部服务 喜欢:http://freegeoip.net/static/index.html

示例:

  

http://freegeoip.net/json/85.152.4.144

答案 1 :(得分:3)

您可以使用以下内容:

function countryCityFromIP($ipAddr)
{
   ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : "";$ipDetail=array();

   $xml = file_get_contents("http://api.hostip.info/?ip=".$ipAddr);
   //get the city name inside the node <gml:name> and </gml:name>

   preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si",$xml,$match);

   $ipDetail['city']=$match[2];

   preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches);

   $ipDetail['country']=$matches[1];

   preg_match("@<countryAbbrev> (.*?)</countryAbbrev>@si",$xml,$cc_match);$ipDetail['country_code']=$cc_match[1]; //assing the country code to array

   return $ipDetail;
}
 print_r(countryCityFromIP('202.53.71.151'));

答案 2 :(得分:0)

您需要地理位置数据库,请参阅他们免费提供的www.maxmind.com

答案 3 :(得分:0)

以下是hostip.info上API的链接:http://www.hostip.info/use.html

对于失败的查询,您可以尝试回到查询的另一个站点,例如hostip.info,碰巧有一个不错的API并且看起来很友好:

http://api.hostip.info/country.php?ip=4.2.2.2

<强>返回

US