php如何获取给定区域设置的当前十进制/千位分隔符
我已经使用setlocale()函数设置了区域设置,比如说“en_US” 现在,我尝试在不使用1000分隔符的情况下格式化货币,如下所示: $currency=number\u格式($value,2, '.', ''); 这是可行的,但有时我有其他货币,我希望数字\格式根据使用区域设置使用正确的十进制分隔符 是否有办法根据已设置的区域设置以某种方式获取当前的十进制分隔符?应该这样做。从手册中: 返回关联数组 包含本地化的数字和 货币格式信息php如何获取给定区域设置的当前十进制/千位分隔符,php,localization,locale,Php,Localization,Locale,我已经使用setlocale()函数设置了区域设置,比如说“en_US” 现在,我尝试在不使用1000分隔符的情况下格式化货币,如下所示: $currency=number\u格式($value,2, '.', ''); 这是可行的,但有时我有其他货币,我希望数字\格式根据使用区域设置使用正确的十进制分隔符 是否有办法根据已设置的区域设置以某种方式获取当前的十进制分隔符?应该这样做。从手册中: 返回关联数组 包含本地化的数字和 货币格式信息 使用Windows上的setlocale()识别的语言
使用Windows上的
setlocale()
识别的语言字符串。Sean Bright是正确的,请使用localecov()
函数。您确定为您的操作系统设置了正确的语言环境吗?因为基于Unix的操作系统使用类似于“en_US.UTF-8”的符号,而Windows使用“en US”。这不是最好的,但它可以工作:
$locale_info=localeconv();
回显“小数点=”$区域设置信息['decimal\u point']。“
\n”;
返回一个与小数点字符以外的其他字段相关联的数组。谢谢,不幸的是,它返回空数组元素:[千分位]=>[int\u curr\u symbol]=>[currency\u symbol]=>[mon\u decimal\u point]=>它与windows有关。所有这些都在我的mac/linux上运行良好,但我一直在寻找一种解决方案,以便在我们的windows开发机器上统一格式化货币。哦,好吧。谢谢你的回答!如果您的开发人员计算机和产品服务器上有不同的操作系统,您可以这样调用
setlocale
:setlocale(LC\u ALL,'en\u US.utf8','en US')
。函数将使用first found locale.Thank,这听起来像是一个解决方案,但在windows上,数组仍然保持为空,即使这些可选的localesTry使用来自的localesetlocale(LC_ALL,'en_US.utf8','american')
在我的XP和Vista上都能完美工作,返回带有货币名称、符号和数字分隔符的填充数组。