You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP技术实现:如何将国家代码替换为国家名称?

解决PHP中将数字国家代码替换为对应国家名称的问题

这问题我之前处理过类似的,给你两个靠谱的PHP解决方案,看哪种更适配你的场景:

方案1:手动创建映射数组(兼容性拉满,无需扩展)

这种方法最直接,适合你已经明确需要处理的国家代码列表的情况,不需要依赖任何PHP扩展,所有环境都能跑:

// 第一步:定义数字国家代码到名称的映射数组,把你需要的代码都补充进去
$countryCodeMap = [
    "4" => "阿富汗",
    "248" => "奥兰群岛",
    "8" => "阿尔巴尼亚",
    "12" => "阿尔及利亚",
    "16" => "美属萨摩亚",
    "20" => "安道尔",
    "24" => "安哥拉",
    // 剩下的代码按这个格式继续添加...
];

// 原业务代码部分
$location = esc_html($resume->candidate_location);
$numericCode = esc_html($resume->candidate_country);

// 替换逻辑:找到对应名称就用名称,找不到就保留原代码(或者自定义默认文本)
$countryName = isset($countryCodeMap[$numericCode]) ? $countryCodeMap[$numericCode] : $numericCode;

// 输出最终结果
echo $location . ' ' . $countryName;

小贴士:如果你需要显示英文名称,直接把数组里的中文换成英文就行,比如 "4" => "Afghanistan"

方案2:使用PHP Intl扩展(优雅且支持全国家列表)

如果你不想手动维护映射数组,或者需要支持所有ISO 3166-1数字国家代码,那用PHP的intl扩展是更优的选择,它能直接根据代码生成标准的国家名称:

注意:需要确保你的PHP环境开启了intl扩展,大部分主流主机都默认支持,若未开启可修改php.ini添加extension=intl或联系主机商配置。

$location = esc_html($resume->candidate_location);
$numericCode = esc_html($resume->candidate_country);
$countryName = $numericCode; // 默认 fallback 到原代码

if (extension_loaded('intl')) {
    // 将数字代码转换为ISO 3166-1 alpha-2格式(比如"4" → "AF")
    $alpha2Code = Locale::getRegionFromCode($numericCode, Locale::REGION_CODE_NUMERIC);
    
    if ($alpha2Code) {
        // 获取对应国家名称,第二个参数可指定显示语言:
        // - 'en_US' → 英文名称
        // - 'zh_CN' → 中文名称
        $countryName = Locale::getDisplayCountry('_' . $alpha2Code, 'zh_CN');
    }
}

// 输出结果
echo $location . ' ' . $countryName;

这个方案的好处是不用手动维护庞大的国家列表,Intl扩展会自动处理标准的国家代码映射,而且支持多语言切换。

内容的提问来源于stack exchange,提问作者kibus90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:12:08