我正在尝试格式化从数据库中获取的收入总额,并使用php的NumberFormatter类格式化formatCurrency方法。
但是,我不想打印出实际的欧元/欧元符号。我只想要简单的数字,用逗号和小数点。
实施例; 1234.56应格式化为1,234.56 目前的产出为1,234.56欧元。
我正在使用的代码:
$array['total_revenue'] = $this
->db
->query($sql)
->row_array()['SUM( booking_total )'];
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency($array['total_revenue'], 'EUR') . PHP_EOL;
对于我如何解决这个问题,有人会对删除欧元符号有任何想法吗?
答案 0 :(得分:2)
简单的正则表达式可以快速解决您的问题。尝试;
$actual = $formatter->formatCurrency($array['total_revenue'], 'EUR') . PHP_EOL;
$output = preg_replace( '/[^0-9,"."]/', '', $actual );
echo $output;
希望这有帮助
答案 1 :(得分:2)
我之所以来到这里,是因为出于某种原因,$formatter->setSymbol(NumberFormatter::CURRENCY_SYMBOL, '');
忽略了$formatter->formatCurrency($array['total_revenue'], 'USD');
要解决此问题,我在这里找到了解决方案。 https://www.php.net/manual/en/numberformatter.setsymbol.php#124153
这对某些人可能是显而易见的,但是
setSymbol(NumberFormatter::CURRENCY_SYMBOL, '')
对formatCurrency
不起作用-它会被忽略...使用
NumberFormatter::CURRENCY
和$fmt->format(123);
获取货币值,其符号指定为CURRENCY_SYMBOL
(或INTL_CURRENCY_SYMBOL
)
即
$fmt = new NumberFormatter('de_DE', NumberFormatter::CURRENCY);
$fmt->setSymbol(NumberFormatter::CURRENCY_SYMBOL, '');
$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, 2);
echo $fmt->format(56868993064.7985);
//Output: 56.868.993.064,80
答案 2 :(得分:0)
您可以使用substr()
方法,但我不确定这是否是正确的方法。如下所示:
echo substr($formatter->formatCurrency($array['total_revenue'], 'EUR'), 1) . PHP_EOL;
答案 3 :(得分:0)
您应该使用setSymbol()
函数:
$formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY);
$formatter->setSymbol(NumberFormatter::CURRENCY_SYMBOL, '');
echo $formatter->formatCurrency($array['total_revenue'], 'EUR') . PHP_EOL;