2012-12-13 69 views
0

我想使用ipinfodb API查找我的網站訪問者的國家代碼。如何使用ipinfodb查找國家代碼

當我嘗試以下方法,http://api.ipinfodb.com/v3/ip-country/?key=<My_API_Key>&ip=<Some_IP>,它提供了以下的輸出:

OK;;<Some_IP>;US;UNITED STATES 

如何過濾這個輸出,使其僅顯示了國家代碼?

問候, 蒂莫西

編輯:

在回答查爾斯,

在谷歌搜索後,我才知道,該API可以給出一個「格式屬性作爲XML」,使以下作品。

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

echo $xml->countryCode; 

如何在沒有XML參數的情況下獲得相同的輸出結果?

感謝

+0

感謝您的回覆。我已經得到了XML參數所需的輸出。但是我怎麼能沒有額外的爭論呢? (新代碼已添加到我的文章中) –

+0

當您編寫從API獲取的XML時,它的easiert。然後我們可以幫助你。以您的榜樣爲例,我們無法運行您的API調用。 – Stony

回答

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的其餘部分,看是否有可能有其他有趣的事情錯過。

0

上面的答案不是特別有用,因爲如果每次明確指定相同的IP地址,服務器輸出只是靜態的。如果您對特定IP地址的位置請求進行硬編碼,則每次都會變得相同。重點是什麼?

做到這一點,而不是

  • 安裝PHP類的API。 PHP Class
  • 玩弄PHP樣本發現here;將其保存爲自己的網頁並觀察結果。我們稱之爲「userlocation.php」。請注意,如果您從本地主機加載,這些字段將爲空。

好的,解析這個輸出的技巧是array_values()。我永遠花了我的筆墨,但最終我偶然發現了this

所以......

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

無論元素,你需要,你可以通過這種方式獲得 - 這是動態的。該代碼將返回與用戶IP地址相關的任何國家/地區。

最後一個註釋。注意將您的API密鑰粘貼到類文件中,而不要粘貼到userlocation.php中。類文件變量受到保護,這是一件好事。

無論如何,我不是專家;只是想我會分享我學到的東西。