php - 在 PHP 中获取货币符号

让我们从一段简单的代码开始,用 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,而伊朗为

https://stackoverflow.com/questions/13897516/

相关文章:

c# - 十六进制的 String.Format

ruby - CSV.read 第 x 行的非法引用

php - $SimpleXML->asXML() 的格式输出;

.net - 如何使用缩写的时区显示 DateTime?

c# - 在 C# (asp.net MVC3) 中用逗号和小数格式化数字

ios - 如何将 Double 格式化为货币 - Swift 3

python - 如何右对齐数字数据?

c# - 在 C# 中使用自定义千位分隔符

c++ - 使用printf打印 float 时有额外的前导零?

c# - 如何停止 ReSharper 删除对象初始化程序中的空格