我不确定我的回答是否能满足您的要求,但我建议(尤其是当您不想更改服务器上的语言环境时)使用可以为您提供答案的函数:
据我所知(似乎还有维基百科),CSV 中的列表分隔符是逗号,除非语言环境的小数点是逗号,在这种情况下,列表分隔符是分号。
因此,您可以使用以下命令获取使用逗号 (Unicode U+002C) 作为分隔符的所有语言环境的列表:
cd /usr/share/i18n/locales/
grep decimal_point.*2C *_* -l
然后您可以使用此列表来确定适当的列表分隔符:
function get_csv_list_separator($locale) {
$locales_with_comma_separator = "az_AZ be_BY bg_BG bs_BA ca_ES crh_UA cs_CZ da_DK de_AT de_BE de_DE de_LU el_CY el_GR es_AR es_BO es_CL es_CO es_CR es_EC es_ES es_PY es_UY es_VE et_EE eu_ES eu_ES@euro ff_SN fi_FI fr_BE fr_CA fr_FR fr_LU gl_ES hr_HR ht_HT hu_HU id_ID is_IS it_IT ka_GE kk_KZ ky_KG lt_LT lv_LV mg_MG mk_MK mn_MN nb_NO nl_AW nl_NL nn_NO pap_AN pl_PL pt_BR pt_PT ro_RO ru_RU ru_UA rw_RW se_NO sk_SK sl_SI sq_AL sq_MK sr_ME sr_RS sr_RS@latin sv_SE tg_TJ tr_TR tt_RU@iqtelif uk_UA vi_VN wo_SN");
if (stripos($locales_with_comma_separator, $locale) !== false) {
return ";";
}
return ",";
}
(语言环境列表取自我自己的Debian机器,我不知道列表的完整性)
如果您不想拥有此静态语言环境列表(尽管我认为这不会经常更改),您当然可以使用上面的命令生成列表并将其缓存。
最后一点,根据RFC4180 第 2.6 节,列表分隔符实际上永远不会改变,而是包含逗号的字段(因此这也意味着浮点数,取决于语言环境)应该用双引号括起来。虽然(如上链接)没有多少人遵循 RFC 标准。