Muy buena esa tradución JavierB
![Aplauso](http://static.forosdelweb.com/fdwtheme/images/smilies/aplausos.gif)
, aunque con algunos fallos, esta es la misma funcion pero creo haberlos corregido.
Espero que sirva, aunque solo llega hasta el 999
![triste](http://static.forosdelweb.com/fdwtheme/images/smilies/frown.png)
si alguien se anima que la continue
Código PHP:
function letras ($num) {
$unidad = array ('un','dos','tres','cuatro','cinco','seis','siete','ocho','nueve');
$decenas = array ('diez','once','doce', 'trece','catorce','quince');
$decena = array ('dieci','veinti','treinta','cuarenta','cincuenta','sesenta','setenta','ochenta','noventa');
$centena = array ('ciento','doscientos','trescientos','cuatrocientos','quinientos','seiscientos','setecientos','ochocientos','novecientos');
$linea = "";
$cen = (int) ($num / 100); //Cifra de las centenas
$doble = $num - ($cen*100); //Cifras de las decenas y unidades
$dec = (int)($num / 10) - ($cen*10); //Cifra de laa decenas
$uni = $num - ($dec*10) - ($cen*100); //Cifra de las unidades
if ($cen > 0) {
if ($num == 100) $linea = "cien";
else $linea = $centena[$cen-1].' ';
}//end if
if ($doble>0) {
if ($doble == 20) {
$linea .= " veinte";
}elseif (($doble < 16) and ($doble>9)) {
$linea .= $decenas[$doble-10];
}else {
$linea .=' '. $decena[$dec-1];
}//end if
if ($dec>2 and $uni<>0) $linea .=' y ';
if (($uni>0) and ($doble>15) or ($dec==0)) {
if ($uni == 1) $linea.="uno";
else $linea.=$unidad[$uni-1];
}
}
return $linea;
}//end function letras