根据符号获取货币代码
Get currency code based on symbol
我目前正在使用 API,我接收的不是货币的浮点数或整数,而是像这样的字符串。
- 2.49 美元
- 2.49 英镑
- 2.49 欧元
- 等等
问题是我需要分别存储价值和货币,但货币需要存储为 ISO 代码,例如 EUR、USD 或 GBP,而不是 € 和 $。
在 PHP 中有没有什么方法可以使用 NumberFormatter 或类似的东西根据货币符号获取货币代码?
目前我只有很长的货币符号和名称列表,我用它们来做 string_contains('.49', '$')
之类的事情来检查某种货币。
您可以使用 NumberFormatter::parseCurrency:
<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo "#1: ".$fmt->parseCurrency(".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(".49", $curr)." in $curr<br>";
?>
例如将第一个输出更改为:
#1: 2.49 in AUD
我目前正在使用 API,我接收的不是货币的浮点数或整数,而是像这样的字符串。
- 2.49 美元
- 2.49 英镑
- 2.49 欧元
- 等等
问题是我需要分别存储价值和货币,但货币需要存储为 ISO 代码,例如 EUR、USD 或 GBP,而不是 € 和 $。
在 PHP 中有没有什么方法可以使用 NumberFormatter 或类似的东西根据货币符号获取货币代码?
目前我只有很长的货币符号和名称列表,我用它们来做 string_contains('.49', '$')
之类的事情来检查某种货币。
您可以使用 NumberFormatter::parseCurrency:
<?php
$fmt = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
echo "#1: ".$fmt->parseCurrency(".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(".49", $curr)." in $curr<br>";
?>
例如将第一个输出更改为:
#1: 2.49 in AUD