Как преобразовать строку страны в ее код ISO 3166-1 с помощью Zend? - PullRequest
4 голосов
/ 06 июля 2010

Кто-нибудь знает, возможно ли использовать Zend_Locale для получения кода ISO 3166-1 для страны, если в качестве строки указано название страны?Например, у меня есть «Nederland», поэтому я хотел бы получить «NL».

Ответы [ 4 ]

3 голосов
/ 06 июля 2010

Я не уверен, как в Zend HTTp можно делать вызовы, но здесь, вероятно, хороший ресурс для ссылки.

Используйте гео-данные Yahoo !, которые позволяют отображать строки произвольной формы в идентификаторы WOE. Для стран идентификаторы WOE - это коды ISO 3166-1.

Чтобы преобразовать строку произвольной формы в идентификатор WOE, вы можете использовать API GeoPlanet: http://developer.yahoo.com/geo/geoplanet/

3 голосов
/ 06 июля 2010

Я не знаю, есть ли у Zend что-то для этого, но это довольно легко сделать самостоятельно.

Этот урок показывает, как вы можете получить последний список 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() функцию .Это, вероятно, было бы предпочтительнее ИМО.Или, черт возьми, вы можете просто сохранить XML и проанализировать его при загрузке.

2 голосов
/ 23 февраля 2012

Я собрал актуальную коллекцию названий стран и кодов стран ISO 3166 по адресу:

https://github.com/johannesl/Internationalization

Вы можете использовать его для преобразования обоих названий => кода страныи обратно.

Я также создаю коллекцию псевдонимов стран, которые появятся на github.

2 голосов
/ 06 июля 2010

Вы должны взглянуть на Zend_Locale :: getTranslation ().Вы можете получить список (простой массив) названий стран - и затем вы можете использовать array_search () для получения необходимого «ключа страны»!

...