国名を文字列として使用している場合、Zend_Localeを使用して国のISO 3166-1コードを取得できるかどうかを誰かが知っていますか?たとえば、私は「オランダ」を持っているので、「NL」を取得したいと思います。
4 に答える
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()
関数を使用してロードすることもできます。それはおそらく好ましいIMOでしょう。または、XMLを保存して、ロード時に解析することもできます。
Zend内でHTTp呼び出しを行う方法はわかりませんが、ここを参照することをお勧めします。
Yahoo!のGeoデータを使用して、自由形式の文字列をWOEIDにマッピングできるようにします。国の場合、WOEIDはISO3166-1コードです。
自由形式の文字列をWOEIDに変換するには、GeoPlanet APIを使用できます:http://developer.yahoo.com/geo/geoplanet/
Zend_Locale :: getTranslation()を確認する必要があります。国名のリスト(単純な配列)を取得できます。次に、array_search()を使用して、必要な「国キー」を取得できます。
国名とISO3166国コードの最新のコレクションを次の場所で作成しました。
https://github.com/johannesl/Internationalization
これを使用して、名前=>国コードとその逆の両方を変換できます。
また、githubに表示される一般的な国のエイリアスのコレクションも作成しています。