2012-01-26 119 views
16

我无法弄清楚如何获得货币符号?PHP money_format(); £英镑不是英镑

目前我使用

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

这给我的输出

GBP1,000 

但我想

£1,000 

我已签出的PHP手册,但它不是”这很有帮助。

任何想法?

+0

也许这将帮助:http://stackoverflow.com/questions/6060008/money-format-showing – Tim

+1

@Tim这只是告诉你把£而不是£但实际上,我可以得到£显示。它只是显示英镑的地方。谢谢虽然:) –

+0

我的机器甚至不打印'英镑'。 :o –

回答

18

你试过吗?

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

这就近了我想,我现在正在钻一个?在中间。我有我的字符集utf-8这很奇怪:S –

+6

只是添加utf8_encode(money_format('%n',1000));你会看到符号... :) – SERPRO

+1

啊哈!非常好,谢谢你的帮助:) –

-1

一个简单的解决方案可能会替换英镑&磅; (没有空格)在money_format之后。

+0

在PHP手册中,他们显示你可以使用$符号,所以你必须能够得到英镑,因为你可以设置你的位置为GB –

+1

你尝试过使用'setlocale(LC_MONETARY,'en_GB.UTF-8');'' 。它被@tim网站上的评论所取代。 – Aidan

-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); 
+0

这是使用'money_format'的错误方法。 – rickyduck

+0

这仅适用于在HTML页面上显示它 –

18

这为我工作:

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额外的呼叫可以被保存。

+0

比选定的答案更灵活,因为如果使用不同的地点,这将停止重写函数的需要。 – rickyduck

0

以上都不适合我。他们在£标志前打印'A'。相反,建立在艾丹和Diegos soloutions我有以下几点:

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

下面是那些你和我一样,谁认为PHP的money_format是可怕的解决方案。

return '£' . number_format((float) $amount, 2, '.', ',');