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; } ?>