Lenguaje PHP

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ón

PRIMERA 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:

  1. Usando Librería (Número a Letras PHP).
  2. 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

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!.

3 comentarios

Deja una respuesta

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

Botón volver arriba