PHP money_format(); £不是英镑

时间:2012-01-26 14:12:04

标签: php money-format

我无法弄清楚如何获得货币符号?

目前我正在使用

setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);

哪个给我输出

GBP1,000

但我想要

£1,000

我已经查看了PHP手册,但没有用。

有什么想法吗?

7 个答案:

答案 0 :(得分:20)

你试过这个吗?

setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));

答案 1 :(得分:19)

这对我有用:

setlocale(LC_MONETARY, 'en_GB.UTF-8');
money_format('%n', 1000);

它与选定的解决方案类似,但它对我不起作用。为什么?原因是我的系统中未定义区域设置en_GB,只有en_GB.UTF-8

$ locale -a | grep "en_GB"
en_GB.utf8

此外,通过直接使用UTF-8代码集,可以保存对utf8_encode的额外调用。

答案 2 :(得分:3)

对于那些认为PHP的money_format很糟糕的人来说,这是一个解决方案。

PreviewKeyDown

答案 3 :(得分:1)

我知道这是一个旧线程,但是我发现不使用money_format而现在不推荐使用的方式

$fmt = numfmt_create( 'en_GB', NumberFormatter::CURRENCY );
$formattedAmount = numfmt_format_currency($fmt, 1000, "GBP");
echo $formattedAmount;

将显示£1,000.00

如果您需要从末尾删除.00,则可以使用

substr(formattedAmount, 0, -3);

答案 4 :(得分:0)

上述解决方案均不适合我。他们正在打印A'在£标志之前。相反,在Aidan和Diego的解决方案的基础上,我有以下几点:

setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price)); 

答案 5 :(得分:-1)

一个简单的解决方案可以是用&替换GBP。磅(没有空格)money_format之后。

答案 6 :(得分:-6)

使用str_replace()函数是一个选项。

£ - 英镑 - £(163)

// Search for the GBP in your string (subject) then replace for the symbol code
$search = "GBP";
$replace = "£";
$subject = "GBP";
echo str_replace($search, $replace, $subject);