让我们从一段简单的代码开始,用 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 代码获取货币符号?
首先,世界上没有任何人都可以阅读和理解的国际全局货币符号表。
在每个地区/国家/地区,货币符号会有所不同,这就是为什么您必须使用浏览器/用户区域设置根据阅读者来确定它们。
正确的方法如您所料,使用 NumberFormatter::CURRENCY_SYMBOL,但您首先必须设置适当的语言环境,例如 en-US@currency=JPY:
$locale='en-US'; //browser or user locale
$currency='JPY';
$fmt = new NumberFormatter( $locale."@currency=$currency", NumberFormatter::CURRENCY );
$symbol = $fmt->getSymbol(NumberFormatter::CURRENCY_SYMBOL);
header("Content-Type: text/html; charset=UTF-8;");
echo $symbol;
这样用户就可以理解符号了。
例如,$symbol 将是:
- 加元 (CAD):CA$在美国,CAD在罗马尼亚,$CA在伊朗
- 伊朗里亚尔 (IRR):美国为IRR,而伊朗为﷼
我是一名优秀的程序员,十分优秀!