PHP money_format (); Знак £ не GBP - PullRequest
16 голосов
/ 26 января 2012

Не могу понять, как получить символ валюты?

На данный момент я использую

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

которые дают мне вывод

GBP1,000

Но я хочу

£1,000

Я ознакомился с руководством по PHP, но оно не очень полезно.

Есть идеи?

Ответы [ 6 ]

20 голосов
/ 20 декабря 2012

Это сработало для меня:

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.

20 голосов
/ 26 января 2012

Вы пробовали это?

setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
3 голосов
/ 08 февраля 2017

Вот решение для тех из вас, как я, которые думают, что PHP money_format ужасен.

$formatted = '£' . number_format( (float) $amount, 2, '.', ',' );
0 голосов
/ 23 января 2015

Ни одно из приведенных выше решений не сработало для меня. Они печатали 'A' перед знаком £. Вместо этого, опираясь на решения Эйдана и Диего, я получаю следующее:

setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price)); 
0 голосов
/ 26 января 2012

Используйте функцию 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 голосов
/ 26 января 2012

Простое решение - заменить GBP на & фунт;(без пробелов) после денежного формата.

...