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![Números a letras con PHP usando Librería [Ejemplo completo]](https://www.baulphp.com/wp-content/uploads/2021/07/Numeros-a-letras-con-PHP-usando-Libreria.jpg)
Gracias por tu aporte
Muy bueno gracias
Muy útil, la utilice con una versión antigua de php y funciono de maravilla.
Muchas gracias.