<?php
function enletras($numero,$moneda=''){
   
   $res="";
   if(strpos($numero,".")){
     $tmp=explode(".",$numero);
     $numero=$tmp[0];
     $decimales=$tmp[1];
   }else{
     $decimales="0.00";
   }
   
   if($numero == 0){
     return "cero";
   }
   if($numero<20){
    $res=veinte($numero);
   }elseif($numero <=99){
    $res=decena($numero);
   }elseif($numero <=999){
    $res=centena($numero);
   }elseif($numero <=999999){
    $res=millares($numero);
   }
   
   if($res=="uno"){
     return "un ".substr($moneda,0,strlen($moneda)-2)." con $decimales/100";
   }
   
   if(substr($res,-3)=="uno"){
     return substr($res,0,strlen($res)-1+1)."";
   }else{
     return "$res";
   }
   
}

function millares($numero){
  switch(strlen($numero)){
    case 4: 
          if(substr($numero,0,1)==1){
            return "un mil ".centena(substr($numero,-3));
          }else{
            return veinte(substr($numero,0,1))." mil ".centena(substr($numero,-3));
          }
    break;
    case 5: 
            return decena(substr($numero,0,2))." mil ".centena(substr($numero,-3));
    break;
     case 6: 
            if(substr($numero,0,3)=="101"){
              return "ciento un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="201"){
              return "doscientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="301"){
              return "trescientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="401"){
              return "cuatrocientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="501"){
              return "quinientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="601"){
              return "seiscientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="701"){
              return "setecientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="801"){
              return "ochocientos un mil ".centena(substr($numero,-3));
            }
            if(substr($numero,0,3)=="901"){
              return "novecientos un mil ".centena(substr($numero,-3));
            }
            
            return centena(substr($numero,0,3))." mil ".centena(substr($numero,-3));
    break;
  }
}

function centena($numero){
  $centena[1]="ciento ";
  $centena[2]="doscientos ";
  $centena[3]="tescientos ";
  $centena[4]="cuatrocientos ";
  $centena[5]="quinientos ";
  $centena[6]="seiscientos ";
  $centena[7]="setecientos ";
  $centena[8]="ochocientos ";
  $centena[9]="novecientos ";  

  if($numero == 100){ return "cien";}
  if($numero<100){return decena(substr($numero,-2));}
  if($numero>=100 && $numero<=999){
    return $centena[substr($numero,0,1)].decena(substr($numero,1,2));
  }
}

function veinte($numero){
switch ($numero){
   case "01": return "uno";
   break;
   case "02": return "dos";
   break;
   case "03": return "tres";
   break;
   case "04": return "cuatro";
   break;
   case "05": return "cinco";
   break;
   case "06": return "seis";
   break;
   case "07": return "siete";
   break;
   case "08": return "ocho";
   break;
   case "09": return "nueve";
   break;
   case "10": return "diez";
   break;
   case "11": return "once";
   break;
   case "12": return "doce";
   break;
   case "13": return "trece";
   break;
   case "14": return "catorce";
   break;
   case "15": return "quince";
   break;
   case "16": return "dieciseis";
   break;
   case "17": return "diecisiete";
   break;
   case "18": return "dieciocho";
   break;
   case "19": return "diecinueve";
   break;
   case "20": return "veinte";
   break;
  }
}
function decena($numero){
 if(substr($numero,1,1)!="0"){
 $decena[2]="veinti";
 $decena[3]="treinta y ";
 $decena[4]="cuarenta y ";
 $decena[5]="cincuenta y ";
 $decena[6]="sesenta y ";
 $decena[7]="setenta y ";
 $decena[8]="ochenta y ";
 $decena[9]="noventa y ";
 }else{
 $decena[2]="veinte";
 $decena[3]="treinta";
 $decena[4]="cuarenta";
 $decena[5]="cincuenta";
 $decena[6]="sesenta";
 $decena[7]="setenta";
 $decena[8]="ochenta";
 $decena[9]="noventa";
 }
 
 if($numero <=20){
   return veinte($numero);
 }else{
   return ($decena[substr($numero,0,1)].veinte(substr($numero,1,1) ));
 }
}

function unidades($numero){
  switch ($numero){
   case "1": return "uno";
   break;
   case "2": return "dos";
   break;
   case "3": return "tres";
   break;
   case "4": return "cuatro";
   break;
   case "5": return "cinco";
   break;
   case "6": return "seis";
   break;
   case "7": return "siete";
   break;
   case "8": return "ocho";
   break;
   case "9": return "nueve";
   break;
  }
}
?>
