3 formas para formatear dinero en PHP. En este artículo de PHP te mostraré 3 ejemplos completos para darle formato a la moneda o dinero en PHP. Usaremos funciones predeterminadas de PHP para los ejemplos.
La curva de aprendizaje de este ejemplo es muy baja y solamente debemos de aplicar a una variable de tipo numero o un valor numérico extraído desde la base de datos MySQL.
Impirmir dinero en PHP
Sintaxis de la función money_format
money_format() – Da formato a un número como un string de moneda. Por lo tanto, esta función se ajusta a la función strfmon() de la librería de C, con la diferencia de que esta aplicación convierte sólo un número a la vez. y es compatible con las siguientes versiones de PHP (PHP 4 >= 4.3.0, PHP 5, PHP 7)
money_format(string $format, float $number): string
Los argumentos de la función son, en orden: El número que vamos a formatear, el número de decimales, el punto decimal y el separador de miles.
Formato de dinero en PHP
Existen varias formar para formatear un número y formatearlo a moneda, en este artículo usaremos 3 formas para lograr nuestro objetivo.
Por defecto los numero multiplicados poseen decimales, pero si queremos que muestre 2, indicamos el número.
Así que en resumen solo vamos a indicar 2 argumentos, así:
$numeroFormateado = number_format($numero, 2);
3 formas para formatear dinero
A continuación, veremos 3 ejemplos completos de como formatear números a dinero haciendo uso de funciones predeterminadas del PHP.
Formatear usando number_format
Es esta primera forma de formateo, veamos un ejemplo de cómo formatear dinero en PHP usando la función number_format.
<?php $numero = 125454.223; $numeroFormateado = number_format($numero, 2); echo "El dinero formateado es: "; echo '$' . $numeroFormateado; ?>
La salida en el navegador web tendrá la siguiente apariencia:
El dinero formateado es: $125,454.22
Usando Función NumberFormatter
Otra forma es usando esta función que es más intuitivo para darle solución al formateo y es más podemos agregarle la denominación de la moneda, veamos un ejemplo.
$amount = '12345.67'; $formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY); echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL; $formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;
Al ejecutar el siguiente script en el navegador imprimirá lo siguiente:
UK: €12,345.67 DE: 12.345,67 €
Formatear usando Función personalizada
Si deseamos dinamizar nuestro script PHP podemos usar funciones para poder llamarlo en cualquier momento que necesitemos formatear números.
Podemos usar la función number_format o sprintf para lograr nuestro objetivo. A continuación, veremos ejemplos de formateo usando funciones.
<?php // Usando sprintf function formatDollars($dollars){ return '$ '.sprintf('%0.2f', $dollars); } // Usando number_format function formatear_dinero($dollars){ return '$ '.number_format($dollars, 2); } echo formatDollars('4544556.98'); echo "<br>"; echo formatear_dinero('4544556.98'); ?>
Vamos a imprimir dos funciones y esto nos dará como resultado lo siguiente
$ 4544556.98 $ 4,544,556.98
Construí esta pequeña función para formatear automáticamente cualquier cosa en un bonito formato de moneda.
function formatDollars($dollars) { return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2); }
Valores negativos
Se señaló que este no presenta valores negativos. Por lo tanto, se tiene que dividir en dos líneas para que sea más fácil editar el formato. Envuélvalo entre paréntesis si es un valor negativo:
function formatDollars($dollars) { $formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2); return $dollars < 0 ? "({$formatted})" : "{$formatted}"; }
Moneda en países
Cada país suele tener diferentes tipos de formatos, veamos algunos
<?php $number = 1234.56; // Ingles (defecto) $english_format_number = number_format($number); // 1,235 // Francia $nombre_format_francais = number_format($number, 2, ',', ' '); // 1 234,56 $number = 1234.5678; // Notación inglesa sin separadora de miles $english_format_number = number_format($number, 2, '.', ''); // 1234.57 ?>
Script de los 3 ejemplos completos
<?php /*A) PRIMERA FORMA*/ $numero = 125454.223; $numeroFormateado = number_format($numero, 2); echo "El dinero formateado es: "; echo '$' . $numeroFormateado; echo "<br>"; /*B) SEGUNDA FORMA*/ $amount = '12345.67'; $formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY); echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL; $formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL; /*C) TERCERA FORMA*/ // Usando sprintf function formatDollars($dollars){ return '$ '.sprintf('%0.2f', $dollars); } // Usando number_format function formatear_dinero($dollars){ return '$ '.number_format($dollars, 2); } echo formatDollars('4544556.98'); echo formatear_dinero('4544556.98'); ?>
3 formas para formatear dinero: Conclusión
Existen varias formas de formatear números a monedas, en este artículo hemos dado 3 ejemplos completos para lograr el objetivo. Sin embargo, para proyectos grandes podemos dinamizar el formateo usando funciones personalizadas como vimos en la tercera forma.
Si tienen dudas pueden realizar sus consultas en los comentarios del articulo y si te gusto el articulo te invito a que lo compartas en las redes sociales.