我想使用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参数的情况下获得相同的输出?
由于
答案 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地址的位置请求进行硬编码,则每次都会相同。重点是什么?
改为
好的,解析这个输出的技巧是array_values()。让我永远想象这一点,但最终我偶然发现了this。
因此...
$locations = array_values($locations);
echo $locations[n],"<br />\n";
echo $locations[n+1],"<br />\n";
etc.
无论你需要什么元素,你都可以这样做 - 而且它是动态的。该代码将返回与用户的IP地址相关的任何国家/地区。
最后一点。注意将API密钥粘贴到类文件中,而不是粘贴到userlocation.php中。类文件变量是受保护的,这是一件好事。
无论如何,我不是专家;我以为我会分享我所学到的东西。