2012-01-26 112 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, '.', ',');