转换国家/地区代码
2022-08-30 18:56:12
有几种方法可以使用国家/地区代码。
我有一个3个字符的代码列表,就像这个页面一样:
有没有一种简单的方法将它们转换为2个字符?就像葡萄牙的“POR”中的“PT”一样。
标准 2 个字符 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
谢谢。
有几种方法可以使用国家/地区代码。
我有一个3个字符的代码列表,就像这个页面一样:
有没有一种简单的方法将它们转换为2个字符?就像葡萄牙的“POR”中的“PT”一样。
标准 2 个字符 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
谢谢。
您可以从 http://country.io/data 获得一些有用的数据文件,这些文件将帮助您:
如果您只想从3个字母代码转到2个字母代码,则可以翻转第一个地图并使用它。不过,您可以通过梳理文件来创建一个直接从3个字母代码到国家名称的地图。下面是一个简单的 PHP 示例:
$codes = json_decode(file_get_contents('http://country.io/iso3.json'), true);
$names = json_decode(file_get_contents('http://country.io/names.json'), true);
$iso3_to_name = array();
foreach($codes as $iso2 => $iso3) {
$iso3_to_name[$iso3] = $names[$iso2];
}
echo $names("PL"); // => "Poland"
echo $iso3_to_map("POL"); // => "Poland"
我看到这个问题是在七年前提出的。今天我遇到了类似的问题,并找到了一个很好的解决方案。希望这个答案对将来遇到同样问题的其他人有所帮助。
有一个单独的库,可以使用 https://github.com/thephpleague/iso3166
然后解决方案将很简单。$alpha 3是一个国家的三个字符表示。Alpha2是该国的两个字符代表。
$ composer require league/iso3166
$data = (new League\ISO3166\ISO3166)->alpha3($alpha3);
数据如下所示:
[
'name' => 'Netherlands',
'alpha2' => 'NL',
'alpha3' => 'NLD',
'numeric' => '528',
'currency' => [
'EUR',
]
]
$countryCodeInTwoChar = $data['alpha2']