php - 根据符号获取货币代码

标签 php currency intl

我目前正在使用一个 API,我接收的不是货币的 float 或整数,而是像这样的字符串。

  • 2.49 美元
  • 2.49 英镑
  • 2.49 欧元
  • 等等

问题是我需要分别存储值(value)和货币,但货币需要存储为 ISO 代码,例如 EUR、USD 或 GBP,而不是 € 和 $。

在 PHP 中有没有什么方法可以使用 NumberFormatter 或类似的东西根据货币符号获取货币代码?

目前我只有很长的货币符号和名称列表,我用它们来执行诸如 string_contains('$2.49', '$') 之类的操作来检查某种货币。

最佳答案

您可以使用 NumberFormatter::parseCurrency :

<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);

echo "#1: ".$fmt->parseCurrency("$2.49", $curr)." in $curr<br>";
echo "#2: ".$fmt->parseCurrency("£2.49", $curr)." in $curr<br>";
echo "#3: ".$fmt->parseCurrency("€2.49", $curr)." in $curr<br>";
?>

打印:

#1: 2.49 in USD
#2: 2.49 in GBP
#3: 2.49 in EUR

请注意,Richard 关于使用相同符号的多种货币的评论仍然适用,但可以通过为 NumberFormatter 指定不同的语言环境来处理:

<?php
$fmt = new NumberFormatter('en_AU', NumberFormatter::CURRENCY);

echo "#1: ".$fmt->parseCurrency("$2.49", $curr)." in $curr<br>";
?>

例如将第一个输出更改为:

#1: 2.49 in AUD

关于php - 根据符号获取货币代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44759551/

相关文章:

PHP session 在 Safari、Webkit Nightly 中不起作用

php - 如何在 WooCommerce 结帐页面上重新排序其他字段

currency - 在 Paypal 上使用不受支持的货币

php - 在此范围内未声明“UnicodeString”

flutter - Dart/Flutter 中 Intl 包的 NumberFormat 的反直觉结果

php - 无限滚动for循环 block

PHP - 搜索数据库并在同一页面上返回结果

ruby-on-rails - Rails 中货币格式的简单方法

angularjs - 如何根据每条记录的数据动态显示 Angular.js 中的货币?

javascript - Intl.NumberFormat 货币 : $US currency symbol?