Estás mirando la versión 3 de mi sitio web, para ver la última versión por favor anda a juque.cl

juque

Juan Pablo Aqueveque: Ingeniero de Sistemas, Diseñador y Desarrollador Web que reside en Temuco, Chile.

PHP: Convertir números a palabras

Publicado por Juan Pablo el 6.Ene.2006 | Comentarios (4)

En contratos, facturas o cheques es preciso escribir los números en palabras. Puede sonar una tarea simple pero no lo es. Piensa por un momento convertir la cifra $2.590.000 (correspondiente al mi sueldo del mes pasado) en palabras: dos millones quinientos noventa mil, ¡es complicado verdad!.

PEAR al rescate

Repositorio de Extensiones y Aplicaciones PHP, esa sería la traducción de la sigla PEAR que casualmente es Pera en Inglés —¿qué cosas no?— y se pronuncia pir. Pero ¿cómo se relaciona PEAR con mi problema inicial?, te cuento. En el sitio de PEAR existe una gran cantidad de clases para todo tipo de tareas comunes y entre ellas hay una clase que convierte números a palabras, es la que usaremos para solucionar nuestro problema.

Descargar e Instalar

En la mayoría de los sistemas basado en Unix (cualquier distribución de Linux) el kernel de PEAR —por decirlo de alguna forma— ya viene instalado junto con algunas clases, por lo general está en /usr/share/pear. Como la clase que usaremos es de reciente data tendrás que descargarla e instalarla. Si eres el administrador de tu servidor puedes instalarla en dicho directorio (/usr/share/pear). Luego de instalarla la estructura debería quedar así:

/usr/share/pear/Numbers/
			Words.php
			Words/
				lang.bg.php
				lang.cs.php
				...

De lo contrario, si no puedes instalar nada ahí hazlo donde te sea más cómodo. Para el ejemplo asumiré el segundo escenario, por lo tanto los pasos son:

  1. Descargar la Clase desde : pear.php.net/package/Numbers_Words/download
  2. Instalarla en el directorio donde correrá el script

La estructura quedaría así:

/
index.php
	Numbers/
		Words.php
		Words/
			lang.bg.php
			lang.cs.php
			...

Ya tenemos todo listo, ahora editemos index.php con el siguiente código:


<?php
require_once 'Numbers/Words.php';
$nw = new Numbers_Words();
$numero = 2590000;
echo $nw->toWords($numero);
?>

Resultado: two million five hundred ninety thousand

¿No es fantástico el resultado?, el idioma por defecto es Inglés —¡ya te diste cuenta!, era que no verdad— por lo tanto el texto será mostrados en ese idioma, para mostrarlo en un hermoso español sólo debes pasarle el parámetro respectivo:echo $nw->toWords($numero,"es"). Para vuestro deleite he habilitado un demo con la clase convirtiendo el número (repito: mi sueldo) en distintos idiomas.

Enlace Permanente, Comentarios (4), Publicada en: PHP

Comentarios

1. RoQ
6.Ene.2006

vaya que interesante, lo mas cerca que he estado de eso fue cuando buscaba una misma funcion para Excel la cual no encontre y tuve que crear un cuadro de formulas que funcionaran de esa manera. Fue divertido pero quito harto tiempo

2. alex
6.Ene.2006

ooorale, excelente...

3. framirez
7.Ene.2006

excelente maestro ... antes de aprender hay que saber algo de poo como minimo :)

4. Pablo Noel
8.Ene.2006

Recuerdo que en febrero del año pasado Hice un pequeño taller para mis amigos diseñadores adentrandolos en el tema, pear realmente salva el dia y unido a smarty es un duro contendor para el framework de ASP.

Actualmente los proyectos de software que desarollamos en forma "secreta" se basan en estas dos utilidades.

Pear saves the day!