如何使用ipinfodb查找国家/地区代码

时间:2012-12-13 14:04:24

标签: php ip-geolocation

我想使用ipinfodb API找到我的网站访问者的国家/地区代码。

当我尝试以下http://api.ipinfodb.com/v3/ip-country/?key=<My_API_Key>&ip=<Some_IP>时,它会给出以下输出:

OK;;<Some_IP>;US;UNITED STATES

如何过滤此输出,使其仅显示国家/地区代码?

此致 蒂莫西

编辑:

回复查尔斯,

在Google上搜索后,我发现API可以被赋予XML格式属性作为XML&#39;以下是有效的。

$xml = simplexml_load_file('http://api.ipinfodb.com/v3/ip-country/?key=<My_API>&format=xml&ip=<Some_IP>);

echo $xml->countryCode;

如何在没有XML参数的情况下获得相同的输出?

由于

2 个答案:

答案 0 :(得分:0)

OK;;<Some_IP>;US;UNITED STATES
     

如何过滤此输出,使其仅显示国家/地区代码?

我发现你能够调用SimpleXML很奇怪,但是没有想到explode,它会将一个字符串转换成一个数组,拆分给定的分隔符。在这种情况下,我们需要在;

上爆炸
$string_data = 'OK;;127.0.0.1;US;UNITED STATES';
$sploded_data = explode(';', $string_data);
print_r($sploded_data);
echo "\nCountry code: ", $sploded_data[3], "\n";

这应该发出:

Array
(
    [0] => OK
    [1] =>
    [2] => 127.0.0.1
    [3] => US
    [4] => UNITED STATES
)
Country code: US

您可能希望查看string manipulation functions的其余内容,看看是否还有其他有趣的内容。

答案 1 :(得分:0)

上述答案并不特别有用,因为如果每次都明确指定相同的IP地址,则服务器输出只是静态的。如果您对特定IP地址的位置请求进行硬编码,则每次都会相同。重点是什么?

改为

  • 为其API安装PHP类。 PHP Class
  • 找到here找到的PHP示例;将其保存为自己的网页并观察结果。我们称之为&#34; userlocation.php。&#34;请注意,如果从localhost加载,这些字段将为null。

好的,解析这个输出的技巧是array_values()。让我永远想象这一点,但最终我偶然发现了this

因此...

$locations = array_values($locations);
echo $locations[n],"<br />\n";
echo $locations[n+1],"<br />\n";
etc.

无论你需要什么元素,你都可以这样做 - 而且它是动态的。该代码将返回与用户的IP地址相关的任何国家/地区。

最后一点。注意将API密钥粘贴到类文件中,而不是粘贴到userlocation.php中。类文件变量是受保护的,这是一件好事。

无论如何,我不是专家;我以为我会分享我所学到的东西。