
Con la función money_format money_format( $formato, $numero ), podemos convertir un numero en el formato de moneda sin necesidad de estar agregando el símbolo, establecer el numero de decimales que tendrá el numero, el separador de miles y el separador de decimales. En formato lo mas sencillo es poner «%i» o «%n» siendo la primera el formato internacional para la configuración regional y la segunda el formato nacional para la configuración regional.
Estas opciones las coges de las locales que tengamos definidas en el sistema, y aquí viene lo divertido de la historia.
Primero establecemos el formato monetario con setlocale.
$numero = 12345.67; setlocale(LC_MONETARY, 'es_ES'); echo money_format('%i', $numero) ."\n"; // devuelve 12.345,6,7 EUR echo money_format('%n', $numero) ."\n"; //devuelve 12.345,67 €
Es posible que probéis estos ejemplos y no funcionen, uno de los motivos es si estais usando ubuntu o cualquier distro basada en Debian, en estas distros hay que poner en vez de es_ES , es_ES.UTF-8, o puede que estéis probando esta función en windows y no funcione a lo cual me remito a lo que dice la documentacion de PHP:
«La función money_format() sólo está definida si el sistema tiene capacidad strfmon. Por ejemplo, Windows no lo hace, así que money_format() no está definido en Windows.»
Por lo tanto si tenemos la aplicación corriendo en un windows no podremos utilizar esta función tan util.
+ Info: http://es.php.net/manual/es/function.money-format.php