转换国家/地区代码

2022-08-30 18:56:12

有几种方法可以使用国家/地区代码。

我有一个3个字符的代码列表,就像这个页面一样:

http://www.fina.org/H2O/index.php?option=com_content&view=category&id=93:asia&Itemid=638&layout=default

有没有一种简单的方法将它们转换为2个字符?就像葡萄牙的“POR”中的“PT”一样。

标准 2 个字符 - http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

谢谢。


答案 1

您可以从 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"

答案 2

我看到这个问题是在七年前提出的。今天我遇到了类似的问题,并找到了一个很好的解决方案。希望这个答案对将来遇到同样问题的其他人有所帮助。

有一个单独的库,可以使用 https://github.com/thephpleague/iso3166

然后解决方案将很简单。$alpha 3是一个国家的三个字符表示。Alpha2是该国的两个字符代表。

  1. $ composer require league/iso3166
  2. $data = (new League\ISO3166\ISO3166)->alpha3($alpha3);
  3. 数据如下所示:

    [
      'name' => 'Netherlands',
      'alpha2' => 'NL',
      'alpha3' => 'NLD',
      'numeric' => '528',
      'currency' => [
        'EUR',
        ]
    ]
    
  4. $countryCodeInTwoChar = $data['alpha2']

推荐