Ответ 1
Вы пробовали это?
setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
Я не могу понять, как получить символ валюты?
В настоящий момент я использую
setlocale(LC_MONETARY, 'en_GB');
money_format('%i', 1000);
Что дает мне вывод
GBP1,000
Но я хочу
£1,000
Я проверил руководство по PHP, но это не так полезно.
Любые идеи?
Вы пробовали это?
setlocale(LC_MONETARY, 'en_GB');
utf8_encode(money_format('%n', 1000));
Это сработало для меня:
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
.
Здесь решение для тех из вас, как я, которые считают PHP money_format ужасным.
return '£' . number_format( (float) $amount, 2, '.', ',' );
Ни одно из вышеописанных разрешений не работало для меня. Они печатали "A
" перед знаком £
. Вместо этого, основываясь на решениях Aidan и Diegos, у меня есть следующее:
setlocale(LC_MONETARY, 'en_GB.UTF-8');
echo (money_format('%n', $bagel->Price));
Легкое решение может быть заменено на GBP с фунтом; (без пробелов) после money_format.
Использовать функцию 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);