Php 获取基于符号的货币代码

Php 获取基于符号的货币代码,php,currency,intl,Php,Currency,Intl,我目前正在使用一个API,在这个API中,我接收的不是货币的浮点或整数,而是这样的字符串 2.49美元 2.49英镑 2.49欧元 等等 问题是,我需要分别存储值和货币,但货币需要存储为ISO代码,例如欧元、美元或英镑,而不是欧元和美元 在PHP中,是否有任何方法可以使用NumberFormatter或类似的东西获取基于货币符号的货币代码 目前,我只是有一个很长的货币符号和名称列表,我使用这些符号和名称执行类似于string\u contains(“$2.49”,“$”)的操作,以检查某种货

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

  • 2.49美元
  • 2.49英镑
  • 2.49欧元
  • 等等
问题是,我需要分别存储值和货币,但货币需要存储为ISO代码,例如欧元、美元或英镑,而不是欧元和美元

在PHP中,是否有任何方法可以使用NumberFormatter或类似的东西获取基于货币符号的货币代码

目前,我只是有一个很长的货币符号和名称列表,我使用这些符号和名称执行类似于
string\u contains(“$2.49”,“$”)
的操作,以检查某种货币。

您可以使用:

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

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

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

没有通用的解决方案,因为多种货币使用相同的符号。例如,澳元、新西兰元、美元……都使用美元符号。@GauravDave-这与问题的要求正好相反。我会冒险猜测,将
en_-US
更改为另一个国家代码可能会导致
$
根据地区被解释为不同的货币。是的,已确认。
#1: 2.49 in USD
#2: 2.49 in GBP
#3: 2.49 in EUR
<?php
$fmt = new NumberFormatter('en_AU', NumberFormatter::CURRENCY);

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