Php 转换国家代码

Php 转换国家代码,php,country-codes,Php,Country Codes,关于国家代码有几种方法 我有一个3个字符的代码列表,如本页所示: 有没有一种简单的方法将它们转换为两个字符?就像葡萄牙的“POR”中的“PT” 2个字符的标准- 谢谢。在gis.stackexchange中有一个类似的问题。 我想通过在gis中发布这些问题,您将获得更多信息。 $mapping['POR']='PT' $shortcode=$mapping[$longcode] 如果不进行实际查找,就没有简单的方法:AFG(阿富汗)变成AF,AND(安道尔)变成AD,BLR(白俄罗斯)变成

关于国家代码有几种方法

我有一个3个字符的代码列表,如本页所示:

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

2个字符的标准-


谢谢。

在gis.stackexchange中有一个类似的问题。

我想通过在gis中发布这些问题,您将获得更多信息。

$mapping['POR']='PT'
$shortcode=$mapping[$longcode]


如果不进行实际查找,就没有简单的方法:AFG(阿富汗)变成AF,AND(安道尔)变成AD,BLR(白俄罗斯)变成BY。。。所以你不能做任何简单的字符操作来转换


我的建议是使用一个countrycode表,或者在任何现有表中添加一个额外的列,这样您就可以同时保存这两个代码。

这不是一个简单的方法,因为国家名称中没有特定的方案。例如,葡萄牙的
PT
来自
POR
,其他国家的情况也可能不同。您可能需要创建一个数组来为每个国家/地区保存两个字母

示例:

$countries = array('PT' => 'Portugal', 'UK' => 'United Kingdom');

虽然这可能是一个漫长而痛苦的方法,但编写一个可以永久保存的函数可能非常值得,也许这可以为您指明正确的方向:

<?php
function myCodes($in, $type){
$out = "";
$long = array('portugal', 'united kingdom');
$short = array('pt', 'uk');
$in = strtolower(trim($in));
switch($type){
case 'long':$out = str_replace($short, $long, $in);break;
case 'short':$out = str_replace($long, $short, $in);break;
}
echo $out;
}

echo myCodes('United Kingdom', 'short'); //this will echo 'uk'
echo myCodes('UK', 'long'); //this will echo 'united kingdom'

?>


这当然会有一些缺点,例如确保长短数组按位置匹配,并且您还需要维护该功能。

在ruby中,您可以这样做: (从获取countryInfo.txt)


您可以从中获得一些有用的数据文件,这些文件将帮助您:

  • -ISO2至ISO3国家代码的地图
  • -ISO2国家代码到国家名称的地图
如果您只想从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"

对于任何解决这个问题的人,我已经制作了一个从alpha3到alpha2的JSON映射。 请在此下载:

因此,您只需将此JSON分配给一个对象(例如countryCodes)。现在,转换只是:
countrycode[“美国”]/“美国”

上述大多数其他答案都不是直接答案。让我试试

我已尝试使用以下代码将3个字符的国家/地区代码转换为2个字符的国家/地区代码:


提供的国家代码以2-iso(键):3-iso(值)的形式提供。因此,我没有搜索键,而是按值搜索,如果成功,则返回第一个对应的键

输出

体重

SV

BB

BQ

一个

缺点-

ANT
代码列表中未定义国家代码


参考-

一个基于Json的数组,包含ISO 3代码,但未排序

和PHP数组
我知道这个问题是七年前提出来的。今天我遇到了类似的问题,找到了一个很好的解决方案。希望这个答案对将来有同样问题的人有所帮助

有一个单独的图书馆可以使用

那么解决办法就简单明了了$alpha3是一个国家的三个字符表示。字母2是国家的两个字符表示

  • $composer需要联盟/iso3166
  • $data=(新联盟\ISO3166\ISO3166)->alpha3($alpha3)
  • 数据如下:

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

  • 基于此处的其他信息,这里有一个完整的功能:

    function convertCountryAlphas3To2($code='') {
     $countries = json_decode('{"AFG":"AF","ALA":"AX","ALB":"AL","DZA":"DZ","ASM":"AS","AND":"AD","AGO":"AO","AIA":"AI","ATA":"AQ","ATG":"AG","ARG":"AR","ARM":"AM","ABW":"AW","AUS":"AU","AUT":"AT","AZE":"AZ","BHS":"BS","BHR":"BH","BGD":"BD","BRB":"BB","BLR":"BY","BEL":"BE","BLZ":"BZ","BEN":"BJ","BMU":"BM","BTN":"BT","BOL":"BO","BIH":"BA","BWA":"BW","BVT":"BV","BRA":"BR","VGB":"VG","IOT":"IO","BRN":"BN","BGR":"BG","BFA":"BF","BDI":"BI","KHM":"KH","CMR":"CM","CAN":"CA","CPV":"CV","CYM":"KY","CAF":"CF","TCD":"TD","CHL":"CL","CHN":"CN","HKG":"HK","MAC":"MO","CXR":"CX","CCK":"CC","COL":"CO","COM":"KM","COG":"CG","COD":"CD","COK":"CK","CRI":"CR","CIV":"CI","HRV":"HR","CUB":"CU","CYP":"CY","CZE":"CZ","DNK":"DK","DKK":"DK","DJI":"DJ","DMA":"DM","DOM":"DO","ECU":"EC","Sal":"El","GNQ":"GQ","ERI":"ER","EST":"EE","ETH":"ET","FLK":"FK","FRO":"FO","FJI":"FJ","FIN":"FI","FRA":"FR","GUF":"GF","PYF":"PF","ATF":"TF","GAB":"GA","GMB":"GM","GEO":"GE","DEU":"DE","GHA":"GH","GIB":"GI","GRC":"GR","GRL":"GL","GRD":"GD","GLP":"GP","GUM":"GU","GTM":"GT","GGY":"GG","GIN":"GN","GNB":"GW","GUY":"GY","HTI":"HT","HMD":"HM","VAT":"VA","HND":"HN","HUN":"HU","ISL":"IS","IND":"IN","IDN":"ID","IRN":"IR","IRQ":"IQ","IRL":"IE","IMN":"IM","ISR":"IL","ITA":"IT","JAM":"JM","JPN":"JP","JEY":"JE","JOR":"JO","KAZ":"KZ","KEN":"KE","KIR":"KI","PRK":"KP","KOR":"KR","KWT":"KW","KGZ":"KG","LAO":"LA","LVA":"LV","LBN":"LB","LSO":"LS","LBR":"LR","LBY":"LY","LIE":"LI","LTU":"LT","LUX":"LU","MKD":"MK","MDG":"MG","MWI":"MW","MYS":"MY","MDV":"MV","MLI":"ML","MLT":"MT","MHL":"MH","MTQ":"MQ","MRT":"MR","MUS":"MU","MYT":"YT","MEX":"MX","FSM":"FM","MDA":"MD","MCO":"MC","MNG":"MN","MNE":"ME","MSR":"MS","MAR":"MA","MOZ":"MZ","MMR":"MM","NAM":"NA","NRU":"NR","NPL":"NP","NLD":"NL","ANT":"AN","NCL":"NC","NZL":"NZ","NIC":"NI","NER":"NE","NGA":"NG","NIU":"NU","NFK":"NF","MNP":"MP","NOR":"NO","OMN":"OM","PAK":"PK","PLW":"PW","PSE":"PS","PAN":"PA","PNG":"PG","PRY":"PY","PER":"PE","PHL":"PH","PCN":"PN","POL":"PL","PRT":"PT","PRI":"PR","QAT":"QA","REU":"RE","ROU":"RO","RUS":"RU","RWA":"RW","BLM":"BL","SHN":"SH","KNA":"KN","LCA":"LC","MAF":"MF","SPM":"PM","VCT":"VC","WSM":"WS","SMR":"SM","STP":"ST","SAU":"SA","SEN":"SN","SRB":"RS","SYC":"SC","SLE":"SL","SGP":"SG","SVK":"SK","SVN":"SI","SLB":"SB","SOM":"SO","ZAF":"ZA","SGS":"GS","SSD":"SS","ESP":"ES","LKA":"LK","SDN":"SD","SUR":"SR","SJM":"SJ","SWZ":"SZ","SWE":"SE","CHE":"CH","SYR":"SY","TWN":"TW","TJK":"TJ","TZA":"TZ","THA":"TH","TLS":"TL","TGO":"TG","TKL":"TK","TON":"TO","TTO":"TT","TUN":"TN","TUR":"TR","TKM":"TM","TCA":"TC","TUV":"TV","UGA":"UG","UKR":"UA","ARE":"AE","GBR":"GB","USA":"US","UMI":"UM","URY":"UY","UZB":"UZ","VUT":"VU","VEN":"VE","VNM":"VN","VIR":"VI","WLF":"WF","ESH":"EH","YEM":"YE","ZMB":"ZM","ZWE":"ZW","GBP":"GB","RUB":"RU","NOK":"NO"}',true);
     $out = $countries[$code];
     return $out;
    }
    

    好问题,但我认为你必须自己写一个,或者使用一些Web服务。如果你在gis.stackexchange.com上发布这个问题,你有更好的机会获得列表或数据库,它们有直接映射PT->葡萄牙。那么你就不必担心把3个字符的代码转换成2个字符的代码了……你可以使用这个网站:你解决了这个问题吗?我有同样的问题,我需要把3个字母转换成2个。如果你能帮我理解的话,我会非常感激Ignatz需要将“POR”转换为“PT”,而不是将IP转换为location@Im0rtality-是的,我知道,如果他得到PT-葡萄牙映射数据库或列表,而不是转换它呢?这就是我建议在GIS中发布此问题的原因。正确,这就是我建议在GIS.stackexchange.com中发布此问题的原因添加一个额外的列显然是调用未定义函数json_deocde()的最佳方法抱歉,修复了错误。应该是json_decode()这个应该是答案你还知道有一个列表提供不同语言的“ISO2国家代码到国家名称”吗?像法语、德语、西班牙语等等?如果你有一个2位数、3位数的国家代码数组,那就很容易了。我发现这真的很有用。谢谢
    [
      'name' => 'Netherlands',
      'alpha2' => 'NL',
      'alpha3' => 'NLD',
      'numeric' => '528',
      'currency' => [
        'EUR',
        ]
    ]
    
    function convertCountryAlphas3To2($code='') {
     $countries = json_decode('{"AFG":"AF","ALA":"AX","ALB":"AL","DZA":"DZ","ASM":"AS","AND":"AD","AGO":"AO","AIA":"AI","ATA":"AQ","ATG":"AG","ARG":"AR","ARM":"AM","ABW":"AW","AUS":"AU","AUT":"AT","AZE":"AZ","BHS":"BS","BHR":"BH","BGD":"BD","BRB":"BB","BLR":"BY","BEL":"BE","BLZ":"BZ","BEN":"BJ","BMU":"BM","BTN":"BT","BOL":"BO","BIH":"BA","BWA":"BW","BVT":"BV","BRA":"BR","VGB":"VG","IOT":"IO","BRN":"BN","BGR":"BG","BFA":"BF","BDI":"BI","KHM":"KH","CMR":"CM","CAN":"CA","CPV":"CV","CYM":"KY","CAF":"CF","TCD":"TD","CHL":"CL","CHN":"CN","HKG":"HK","MAC":"MO","CXR":"CX","CCK":"CC","COL":"CO","COM":"KM","COG":"CG","COD":"CD","COK":"CK","CRI":"CR","CIV":"CI","HRV":"HR","CUB":"CU","CYP":"CY","CZE":"CZ","DNK":"DK","DKK":"DK","DJI":"DJ","DMA":"DM","DOM":"DO","ECU":"EC","Sal":"El","GNQ":"GQ","ERI":"ER","EST":"EE","ETH":"ET","FLK":"FK","FRO":"FO","FJI":"FJ","FIN":"FI","FRA":"FR","GUF":"GF","PYF":"PF","ATF":"TF","GAB":"GA","GMB":"GM","GEO":"GE","DEU":"DE","GHA":"GH","GIB":"GI","GRC":"GR","GRL":"GL","GRD":"GD","GLP":"GP","GUM":"GU","GTM":"GT","GGY":"GG","GIN":"GN","GNB":"GW","GUY":"GY","HTI":"HT","HMD":"HM","VAT":"VA","HND":"HN","HUN":"HU","ISL":"IS","IND":"IN","IDN":"ID","IRN":"IR","IRQ":"IQ","IRL":"IE","IMN":"IM","ISR":"IL","ITA":"IT","JAM":"JM","JPN":"JP","JEY":"JE","JOR":"JO","KAZ":"KZ","KEN":"KE","KIR":"KI","PRK":"KP","KOR":"KR","KWT":"KW","KGZ":"KG","LAO":"LA","LVA":"LV","LBN":"LB","LSO":"LS","LBR":"LR","LBY":"LY","LIE":"LI","LTU":"LT","LUX":"LU","MKD":"MK","MDG":"MG","MWI":"MW","MYS":"MY","MDV":"MV","MLI":"ML","MLT":"MT","MHL":"MH","MTQ":"MQ","MRT":"MR","MUS":"MU","MYT":"YT","MEX":"MX","FSM":"FM","MDA":"MD","MCO":"MC","MNG":"MN","MNE":"ME","MSR":"MS","MAR":"MA","MOZ":"MZ","MMR":"MM","NAM":"NA","NRU":"NR","NPL":"NP","NLD":"NL","ANT":"AN","NCL":"NC","NZL":"NZ","NIC":"NI","NER":"NE","NGA":"NG","NIU":"NU","NFK":"NF","MNP":"MP","NOR":"NO","OMN":"OM","PAK":"PK","PLW":"PW","PSE":"PS","PAN":"PA","PNG":"PG","PRY":"PY","PER":"PE","PHL":"PH","PCN":"PN","POL":"PL","PRT":"PT","PRI":"PR","QAT":"QA","REU":"RE","ROU":"RO","RUS":"RU","RWA":"RW","BLM":"BL","SHN":"SH","KNA":"KN","LCA":"LC","MAF":"MF","SPM":"PM","VCT":"VC","WSM":"WS","SMR":"SM","STP":"ST","SAU":"SA","SEN":"SN","SRB":"RS","SYC":"SC","SLE":"SL","SGP":"SG","SVK":"SK","SVN":"SI","SLB":"SB","SOM":"SO","ZAF":"ZA","SGS":"GS","SSD":"SS","ESP":"ES","LKA":"LK","SDN":"SD","SUR":"SR","SJM":"SJ","SWZ":"SZ","SWE":"SE","CHE":"CH","SYR":"SY","TWN":"TW","TJK":"TJ","TZA":"TZ","THA":"TH","TLS":"TL","TGO":"TG","TKL":"TK","TON":"TO","TTO":"TT","TUN":"TN","TUR":"TR","TKM":"TM","TCA":"TC","TUV":"TV","UGA":"UG","UKR":"UA","ARE":"AE","GBR":"GB","USA":"US","UMI":"UM","URY":"UY","UZB":"UZ","VUT":"VU","VEN":"VE","VNM":"VN","VIR":"VI","WLF":"WF","ESH":"EH","YEM":"YE","ZMB":"ZM","ZWE":"ZW","GBP":"GB","RUB":"RU","NOK":"NO"}',true);
     $out = $countries[$code];
     return $out;
    }