Php 如何使用Zend将国家/地区字符串转换为ISO 3166-1代码?

Php 如何使用Zend将国家/地区字符串转换为ISO 3166-1代码?,php,zend-framework,zend-locale,Php,Zend Framework,Zend Locale,有人知道如果您将国家名称作为字符串,是否可以使用Zend_Locale获取国家的ISO 3166-1代码? 例如,我有“Nederland”,所以我想得到“NL”。我不知道Zend是否有这方面的东西,但你自己做起来相当容易 展示了如何获取XML格式的ISO 3166-1国家代码的最新列表,对其进行解析,然后创建一个PHP文件,在需要国家代码转换数组时可以包含该文件: $str = file_get_contents('http://opencountrycodes.appspot.com/xml

有人知道如果您将国家名称作为字符串,是否可以使用Zend_Locale获取国家的ISO 3166-1代码?
例如,我有“Nederland”,所以我想得到“NL”。

我不知道Zend是否有这方面的东西,但你自己做起来相当容易

展示了如何获取XML格式的ISO 3166-1国家代码的最新列表,对其进行解析,然后创建一个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的。在我看来,这可能更可取。或者,见鬼,您可以保存XML并在加载它时解析它。

我不确定如何在Zend HTTp中进行调用,但这里可能是一个很好的参考资料

使用雅虎s地理数据,允许将自由格式字符串映射到WOE ID。对于国家,WOE ID是ISO 3166-1代码


要将自由格式字符串转换为WOE Id,可以使用GeoPlanet API:

您应该了解Zend_Locale::getTranslation()。您可能会得到一个国家名称列表(一个简单的数组),然后您可以使用array_search()获取所需的“国家密钥”

我在以下网站上收集了最新的国家名称和ISO 3166国家代码:

您可以使用它来转换name=>country code和reverse


我还创建了一个常见国家别名的集合,这些别名将出现在github上。

感谢您提供的提示,但事实上,Zendèu语言环境涵盖了这一部分。这是将国家转换回代码,在代码中国家可以用不同的语言书写,这给了我一个问题。啊,对不起,我误解了你的问题。很酷的东西,谢谢你向我介绍这个。目前,我想把我的代码保存在“室内”,但这肯定有一天会派上用场……而且解决方案非常简单。特别是因为我只允许几个国家使用几种语言,所以数组搜索非常迅速。我把它们都包在一个过滤器里,我可以走了。谢谢