从formatCurrency中删除货币符号

时间:2015-11-26 17:16:28

标签: php numberformatter

我正在尝试格式化从数据库中获取的收入总额,并使用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;

对于我如何解决这个问题,有人会对删除欧元符号有任何想法吗?

4 个答案:

答案 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;