在 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 代码获取货币符号?

原文由 umpirsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

我使用 https://github.com/symfony/Intl 实现了这个:

 Symfony\Component\Intl\Intl::getCurrencyBundle()->getCurrencySymbol('EUR')

回报

'€'.

Symfony 版本 > 4.3

值得指出的是 SF4.3 及更高版本已弃用:

 /**
 * Returns the bundle containing currency information.
 *
 * @return CurrencyBundleInterface The currency resource bundle
 *
 * @deprecated since Symfony 4.3, to be removed in 5.0. Use {@see Currencies} instead.
 */
public static function getCurrencyBundle(): CurrencyBundleInterface
{

所以,你可以这样做:

 use Symfony\Component\Intl\Currencies;
echo Currencies::getSymbol('AUD');

原文由 umpirsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

首先,没有国际通用的全球货币符号表,地球上任何人都可以阅读和理解。

在每个地区/国家,货币符号会有所不同,这就是为什么您必须根据阅读者、使用浏览器/用户区域设置来确定它们的原因。

正确的方法如您所料,使用 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 在美国,而在伊朗将是

原文由 idragosalex 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏