2012-01-26 14 views
16

No puedo encontrar la forma de obtener el símbolo de moneda?PHP money_format(); £ signo no GBP

Por el momento estoy usando

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

que me dan la salida

GBP1,000 

Pero quiero

£1,000 

He comprobado el manual de PHP pero ISN' eso es útil.

¿Alguna idea?

+0

Tal vez esto ayude: http://stackoverflow.com/questions/6060008/money-format-showing – Tim

+1

@Tim eso le dice a poner £ en lugar de £ pero en realidad puede conseguir £ para mostrar. Simplemente muestra GBP en su lugar. Gracias :) :) –

+0

Mi máquina ni siquiera imprime 'GBP'. : o –

Respuesta

18

¿Has probado esto?

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

Esto está cerca, creo, ahora estoy recibiendo un diamante con un? en el medio.Tengo mi juego de caracteres como utf-8, lo cual es extraño: S –

+6

solo agregue utf8_encode (money_format ('% n', 1000)); y verá el símbolo ... :) – SERPRO

+1

Aha! Excelente, gracias por su ayuda :) –

-1

Una solución fácil podría ser reemplazar GBP con & libra; (sin los espacios) después de money_format.

+0

En el manual de php, muestran que puede usar el signo $, por lo que debe poder obtener £, ya que puede establecer su ubicación en GB –

+1

¿Ha intentado utilizar 'setlocale (LC_MONETARY, 'en_GB.UTF-8');' . Fue sugerido en el sitio web @tim colocado como un comentario. – Aidan

-6

Usar la función str_replace() es una opción.

£ - Libra esterlina - £ (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

Esta es la forma incorrecta de usar 'money_format'. – rickyduck

+0

Esto solo tiene sentido para mostrarlo en una página HTML –

18

Esto funcionó para mí:

setlocale(LC_MONETARY, 'en_GB.UTF-8'); 
money_format('%n', 1000); 

Es similar a la solución seleccionada, sin embargo, no funcionó para mí. ¿Por qué? La razón es que la configuración regional en_GB no se definió en mi sistema, sólo se en_GB.UTF-8:

$ locale -a | grep "en_GB" 
en_GB.utf8 

Además, utilizando directamente el conjunto de códigos UTF-8, la llamada extra para utf8_encode puede ser salvado.

+0

Mucho más flexible que la respuesta seleccionada, ya que esto evita la necesidad de reescribir las funciones si se utilizan ubicaciones diferentes. – rickyduck

0

Ninguna de las soluciones anteriores funcionó para mí. Estaban imprimiendo un 'A' antes del signo £. En su lugar sobre la base de Aidan y Diegos soloutions Tengo el siguiente:

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

he aquí una solución para aquellos que, como yo, que piensan money_format de PHP es horrible.

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