【发布时间】:2012-12-03 13:35:39
【问题描述】:
让我们从一段简单的代码开始,用NumberFormatter格式化货币:
$formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(123456789, 'JPY');
打印:¥123,456,789。
如果你想格式化钱,这没关系。
但我想做的是获取给定货币 ISO 4217 代码(例如 JPY)的货币符号(例如 ¥)。
我的第一个猜测是尝试使用:
$formatter->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
但这给出了构造函数 (en_US) 中给出的语言环境的货币符号,在我的例子中是 $。
有没有办法在 PHP 中通过货币 ISO 4217 代码获取货币符号?
【问题讨论】:
-
问题是货币符号可以出现在数字之前或之后。你用这个符号做什么?
-
只要对任何不是数字或逗号的东西做一个正则表达式。类似
/[^0-9,]*/。 -
一些符号是多字节的,所以简单的字符串搜索不会很好。
-
我想避免使用正则表达式。实际上,我想修复 github.com/symfony/symfony/blob/master/src/Symfony/Component/… 并摆脱这个正则表达式,我认为 PHP 支持这个。还是谢谢。
-
我找到的最有用的相关资源是this(是的,它是python,但所有这些函数都在PHP中可用),这是一个有点讨厌的“解决方案”。问题的根源在于此功能取决于主机操作系统是否具有可用的适当语言环境信息 - 但同时我看不出在这些限制范围内不可能做到这一点的原因。
标签: php formatting currency