Portada » Lenguaje PHP » 3 formas para formatear dinero en PHP

3 formas para formatear dinero en PHP

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.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad