4

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

4

4 回答 4

3

我不知道 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 的fgetcsv()函数加载它。这可能是更可取的国际海事组织。或者,哎呀,您可以只保存 XML 并在加载时对其进行解析。

于 2010-07-06T13:56:36.127 回答
3

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

使用 Yahoo! 的地理数据,它允许将自由格式的字符串映射到 WOE Id。对于国家/地区,WOE ID 是 ISO 3166-1 代码。

要将自由格式的字符串转换为 WOE Id,您可以使用 GeoPlanet API:http: //developer.yahoo.com/geo/geoplanet/

于 2010-07-06T14:17:47.643 回答
2

我在以下位置收集了最新的国名和 ISO 3166 国家代码:

https://github.com/johannesl/国际化

您可以使用它来转换名称 => 国家代码和反向。

我还在创建将出现在 github 上的常见国家/地区别名集合。

于 2012-02-23T10:17:00.687 回答
2

你应该看看 Zend_Locale::getTranslation()。您可能会得到一个国家名称列表(一个简单的数组) - 然后您可以使用 array_search() 来获取所需的“国家关键字”!

于 2010-07-06T19:50:49.743 回答