Version: 1.0
Type: Function
Category: Algorithms
License: GNU General Public License
Description: This code translate a number to letter in Spanish
<?php
#
# Number to String
#
#-----------------------------------------------
# Examples
#
# Use : number2string(169)
# Return: ciento sesenta y nueve
#
# Use : number2string(35.652)
# Return: treinta y cinco con seis cientos cincuenta y dos
#
#
function tercia($num)
{
$unidades=array(0=>'cero',1=>'uno',2=>'dos',3=>'tres',4=>'cuatro',5=>'cinco',6=>'seis',7=>'siete',8=>'ocho',9=>'nueve');
$teens=array(0=>'diez',1=>'once',2=>'doce',3=>'trece',4=>'catorce',6=>'quince');
$tens=array(1=>'diez',2=>'veinte',3=>'treinta',4=>'cuarenta',5=>'cincuenta',6=>'sesenta',7=>'setenta',8=>'ochenta',9=>'noventa');
$numero=''.$num;
if (strlen($numero) == 1)
$numero='00'.$numero;
if (strlen($numero) == 2)
$numero='0'.$numero;
$a=$numero[0];
$b=$numero[1];
$c=$numero[2];
//PARA DEBUG
// echo "A: $a<br>";
// echo "B: $b<br>";
// echo "C: $c<br>";
if($a == 0)
{
if($b == 0)
{
$resultado=$unidades[$c];
return $resultado;
}
else if($b == 1)
{
if($c >= 0 && $c <= 5)
{
$resultado = $teens[$c];
return $resultado;
}
else if($c >= 6 and $c <= 9)
{
$resultado = $tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
else if($b == 2)
{
if($c==0)
{
$resultado = 'veinte';
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado='veinti'.$unidades[$c];
return $resultado;
}
}
else if($b >=3 and $b <= 9)
{
if ($c == 0)
{
$resultado = $tens[$b];
return $resultado;
}
if ($c >= 1 and $c <= 9)
{
$resultado = $tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
}
if ($a == 1)
{
if($b == 0)
{
if($c == 0)
{
$resultado = 'cien';
return $resultado;
}
else if( $c > 0 and $c <= 9)
{
$resultado ='ciento '.$unidades[$c];
return $resultado;
}
}
else if( $b == 1)
{
if ($c >= 0 and $c <= 5)
{
$resultado = 'ciento '.$teens[$c];
return $resultado;
}
else if($c >= 6 and $c <= 9)
{
$resultado = 'ciento '.$tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
else if($b == 2)
{
if($c == 0)
{
$resultado = 'ciento veinte';
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado ='ciento veinti'.$unidades[$c];
return $resultado;
}
}
else if($b >= 3 and $b <= 9)
{
if($c == 0)
{
$resultado = 'ciento '.$tens[$b];
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado='ciento '.$tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
}
else if($a >= 2 and $a <= 9)
{
if ($a == 5)
{ $prefix='quinientos '; }
else if($a == 7)
{ $prefix='setecientos '; }
else if($a == 9)
{ $prefix='novecientos '; }
else
{ $prefix=$unidades[$a].' cientos '; }
if($b == 0)
{
if($c == 0)
{
$resultado = $prefix;
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado = $prefix.' '.$unidades[$c];
return $resultado;
}
}
else if($b == 1)
{
if ( $c >= 0 and $c <= 5 )
{
$resultado = $prefix.''.$teens[$c];
return $resultado;
}
else if($c >= 6 and $c <= 9)
{
$resultado = $prefix.' '.$tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
else if($b == 2)
{
if($c == 0)
{
$resultado = $prefix.' veinte';
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado = $prefix.' veinti'.$unidades[$c];
return $resultado;
}
}
else if($b >= 3 and $b <= 9)
{
if($c == 0)
{
$resultado = $prefix.''.$tens[$b];
return $resultado;
}
else if($c > 0 and $c <= 9)
{
$resultado = $prefix.''.$tens[$b].' y '.$unidades[$c];
return $resultado;
}
}
}
}
function principal($num)
{
$result='';
$numero=''.$num;
if(strlen($numero) == 1)
$numero='00000000'.$numero;
if(strlen($numero) == 2)
$numero='0000000'.$numero;
if(strlen($numero) == 3)
$numero='000000'.$numero;
if(strlen($numero) == 4)
$numero='00000'.$numero;
if(strlen($numero) == 5)
$numero='0000'.$numero;
if(strlen($numero) == 6)
$numero='000'.$numero;
if(strlen($numero) == 7)
$numero='00'.$numero;
if(strlen($numero) == 8)
$numero='0'.$numero;
$posicion=1;
for($j=0;$j<3;$j++)
{
$i=$j*3;
$valor=$numero[$i].$numero[$i+1].$numero[$i+2];
if ( $valor != 0 )
{
$res=tercia($valor);
if($i == 0)
{
$result=$res." millones ";
}
else if($i == 3)
{
$result=$result.$res." mil ";
}
else if($i == 6)
{
$result=$result.''.$res;
}
}
}
return $result;
}
function number2string($number)
{
if(! is_numeric($number) )
return "Numero invalido";
$number=''.$number;
list($entero,$fraccion)=split('\.',$number);
if($fraccion>0)
$result=principal($entero).' con '.principal($fraccion);
else
$result=principal($entero);
return $result;
}
?>