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