2010-07-06 58 views

回答

2

你應該看看從Zend_Locale :: getTranslation()。你可能會得到一個國家名稱列表(一個簡單的數組) - 然後你可以使用array_search()來獲得所需的「國家密鑰」!

https://github.com/johannesl/Internationalization

你可以用它來轉換這兩個名稱=>國家代碼和反向:

+0

...這麼簡單的解決方案可以。特別是因爲我只允許幾個國家使用幾種語言,所以array_search很快。我將它捆綁在一個過濾器中,我很好。謝謝! – Peter 2010-07-07 05:45:55

3

我不知道Zend是否有這方面的功能,但是自己做起來相當容易。

This tutorial展示瞭如何抓取的ISO 3166-1國家代碼的最新列表,以XML格式,解析它,然後創建可以在需要的國家代碼轉換陣列包含一個PHP文件:

$str = file_get_contents('http://opencountrycodes.appspot.com/xml/'); 
$xml = new SimpleXMLElement($str); 
$out = '$countries'." = array(\n"; 
foreach ($xml->country as $country) 
{ 
    $out .= "'{$country['code']}' => \"{$country['name']}\",\n"; 
} 
$out .= ");"; 

file_put_contents('country_names.php', $out); 

或者,您可以將其另存爲CSV文件並使用PHP的fgetcsv() function加載它。這可能會是更好的海事組織。或者,你可以保存XML並在加載時解析它。

+0

感謝提示Lèse,但確實這部分是由Zend_Locale覆蓋。這是國家轉換回國家可以用不同語言編寫的代碼,這給我一個問題。 – Peter 2010-07-07 04:59:17

+0

啊,對不起,我誤解了你的問題。 – 2010-07-07 05:41:08

3

我不確定Zend HTTp調用如何進行,但這裏可能是一個很好的參考資源。

使用Yahoo!的地理數據,它允許將自由格式字符串映射到WOE ID中。對於國家來說,WOE Ids是ISO 3166-1的代碼。

要自由形式的字符串轉換成WOE ID,您可以使用GeoPlanet的API:http://developer.yahoo.com/geo/geoplanet/

+0

很酷的東西,謝謝你介紹給我。目前我想保持我的代碼「在室內」,但這肯定會有一天派上用場。 – Peter 2010-07-07 05:44:33

2

我在做countrynames和ISO 3166國家代碼一個上最新集合過來。

我還創建了一個將出現在github上的通用國別別名集合。

相關問題