Números a letras con PHP usando Librería [Ejemplo completo]
¿Como transformar números a letras con PHP?
Números a letras con PHP. Si lo que necesitamos es una solución rápida y precisa sin reinventar la rueda para un programa real podemos utilizar funciones o librerías para lograr tal objetico.
¿Existen librerías para convertir números a letras con PHP?
La respuesta es un Sí. Claro que si existe varias librerías que hacen esta función PHP de una manera muy sencilla.
Ver demostración
Ver DemostraciónPRIMERA FORMA: CONVERTIR NÚMEROS A LETRAS CON PHP
A continuación, vamos a implementar una librería llamada (Número a Letras PHP). Por lo tanto, esta librería PHP nos servirá para convertir un número a su valor correspondiente en letras, palabras o texto según corresponda.
Requisitos de la librería
- PHP 7.2 o superior.
- Servidor local para descargar la librería
- Instalar la aplicación composer
composer require luecano/numero-a-letras
Te recomiendo para usarla tener conocimientos previos del uso del composer para su instalación:
- Instalar composer:
- Tipear composer init
- Digitar composer require (para usar el asistente y colocar la librería)
- Agregar el autoloader
- Probar la librería.
Uso de la Librería y Ejemplos de uso
En primera instancia debemos de agregar la referencia hacia la librería
require 'vendor/autoload.php'; use Luecano\NumeroALetras\NumeroALetras;
Implementación del ejemplo
Para usar el script debemos de implementar siguiente el siguiente ejemplo.
$formatter = new NumeroALetras(); echo $formatter->toMoney(2500.90, 2, 'DÓLARES', 'CENTAVOS'); //DOS MIL QUINIENTOS DÓLARES CON NOVENTA CENTAVOS
Integración Final
Mostrando un ejemplo completo de la declaración de la librería y el uso para poder lograr convertir los números a letras.
<?php // se llama desde una subcarpeta require 'vendor/autoload.php'; // usando paquete use Luecano\NumeroALetras\NumeroALetras; $a='<h1>Convertir números a letras PHP</h1>'; echo $a; $formatter = new NumeroALetras(); echo $formatter->toMoney(10.10, 2, 'SOLES', 'CENTIMOS'); ?>
Recordemos que los números a convertir pueden ser variables definidas o extraídas de una base de datos como ser MySQL.
SEGUNDA FORMA: CONVERTIR NÚMEROS A LETRAS CON PHP
Otra opción es usar una función PHP para convertir números a letras y específicamente usando la clase (NumberFormatter) con esta adaptación se puede mejorar el alcance de NumberFormatter.
La tarea nuestra es poder pasar los parámetros a la función de manera personalizada, por ejemplo: pesos
, centavos
y una conjunción como y
, con
, etc.
Aquí les dejare la función básica que se podría mejorar para adaptarla a sus necesidades y/o proyectos web que estén realizando.
function number_words($valor,$desc_moneda, $sep, $desc_decimal) { $arr = explode(".", $valor); $entero = $arr[0]; if (isset($arr[1])) { $decimos = strlen($arr[1]) == 1 ? $arr[1] . '0' : $arr[1]; } $fmt = new \NumberFormatter('es', \NumberFormatter::SPELLOUT); if (is_array($arr)) { $num_word = ($arr[0]>=1000000) ? "{$fmt->format($entero)} de $desc_moneda" : "{$fmt->format($entero)} $desc_moneda"; if (isset($decimos) && $decimos > 0) { $num_word .= " $sep {$fmt->format($decimos)} $desc_decimal"; } } return $num_word; }
Ejemplo de ejecución
Si deseamos usar la siguiente función podeos implementarlo de la siguiente forma que detallaremos a continuación.
echo number_words("10.10","pesos","y","centavos"); echo number_words("10","pesos","y","centavos"); echo number_words("1000000","pesos","y","centavos"); echo number_words("0.25","pesos","y","centavos"); echo number_words("500.35","dólares","con","centavos");
Resultado en el navegador
Una vez implementado el ejemplo, la siguiente tarea es visualizar el resultado final en el navegador web y debería emitir un resultado similar a este.
diez pesos y diez centavos diez pesos un millón de pesos cero pesos y veinticinco centavos quinientos dólares con treinta y cinco centavos
Conclusión
Si estamos realizando un sistema de facturación u otro relacionado con facturas y monedas, este articulo les ira de maravilla porque explicamos cómo convertir números a letras con PHP.
Hemos realizado dos ejemplos:
- Usando Librería (Número a Letras PHP).
- Con el uso de una función PHP (function number_words).
La integración es muy sencilla y les ahorrara mucho trabajo, espero que esta explicación les ayude en sus proyectos web que estén realizando.
Nota:
Se recomienda probarlo en un servidor de producción porque tienen la mayoria de modulos PHP activados.
Ver demostración
Ver Demostración
Gracias por tu aporte
Muy bueno gracias
Muy útil, la utilice con una versión antigua de php y funciono de maravilla.
Muchas gracias.