2012-01-26 3 views
16

Я не могу понять, как получить символ валюты?PHP money_format(); £ знак не GBP

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

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

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

GBP1,000 

Но я хочу

£1,000 

Я проверил PHP руководство, но это ISN» Это полезно.

Любые идеи?

+0

Может быть, это поможет: http://stackoverflow.com/questions/6060008/money-format-showing – Tim

+1

@ Тим Это просто говорит вам поставить £ вместо £, но я могу реально получить £ для отображения. Он просто показывает GBP на своем месте. Спасибо, хотя :) –

+0

Моя машина даже не печатает 'GBP'. : o –

ответ

18

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

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

Это близко Я думаю, теперь я получаю бриллиант с? в середине.У меня есть charset как utf-8, который является странным: S –

+6

просто добавьте utf8_encode (money_format ('% n', 1000)); и вы увидите символ ... :) – SERPRO

+1

Aha! Отлично, спасибо за вашу помощь :) –

-1

Простое решение может заменить te на GBP & фунт; (без пробелов) после 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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^