我无法弄清楚如何获得货币符号?
目前我正在使用
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
哪个给我输出
GBP1,000
但我想要
£1,000
我已经查看了PHP手册,但没有用。
有什么想法吗?
答案 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);