PHP Ejemplos

3 formas para formatear dinero en PHP

Imprimir formato de número de moneda 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.

Relacionado  Crear archivos en PDF con PHP MySQLi

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.

Relacionado  Sumar y restar horas y minutos con PHP

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.

Relacionado  Llenar select HTML con MySQL PHP: Ejemplos

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.

Descarga 204 Script y Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

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

Botón volver arriba