Foros del Web » Programando para Internet » PHP »

Generar su literal de un numero x en php

Estas en el tema de Generar su literal de un numero x en php en el foro de PHP en Foros del Web. Alguién sabe como puedo generar de número x, su literal con php. Mejor dicho si conoce alguna función en php que pueda generar de un ...
  #1 (permalink)  
Antiguo 28/11/2008, 13:45
(Desactivado)
 
Fecha de Ingreso: enero-2008
Mensajes: 272
Antigüedad: 16 años, 3 meses
Puntos: 1
Generar su literal de un numero x en php

Alguién sabe como puedo generar de número x, su literal con php.

Mejor dicho si conoce alguna función en php que pueda generar de un nùmero su literal

Por ejempo si tengo 100 que me gener "Cien 00/100";
  #2 (permalink)  
Antiguo 28/11/2008, 14:03
Avatar de __DARK__  
Fecha de Ingreso: octubre-2008
Mensajes: 94
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Generar su literal de un numero x en php

Hola Zack78!

Hammm no pz yo no conozco alguna función, pero por lo q entendi no es dificil, puedes crear una función propia. Tel vez generando arrays...

Y teniendo los datos dentro del array por medio de condiciones puedes decir cual corresponde con cual... y lo ultimo si es repetitivo (00/100) solo unes cadenas ...

hamm no se se me vino a la mente algo asi pq alguna vez hice algo similar en java xD, seria cuestion de pensarle un momento. O si alguien ya tiene código pz podrian postearlo o darle una idea mas concreta


Salu2!
  #3 (permalink)  
Antiguo 28/11/2008, 14:13
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: Generar su literal de un numero x en php

hace untiempo atras necesite una funcion que hiciera exactamente eso, pero sin resultados hasta pasado un tiempo en que me pasaron esta funcion y me anda sin problemas espero te sirva:
Código PHP:
// funcion de numero a palabras

function num_letra($num$fem false$dec true

//if (strlen($num) > 14) die("El n?mero introducido es demasiado grande"); 
   
$matuni[2]  = "dos"
   
$matuni[3]  = "tres"
   
$matuni[4]  = "cuatro"
   
$matuni[5]  = "cinco"
   
$matuni[6]  = "seis"
   
$matuni[7]  = "siete"
   
$matuni[8]  = "ocho"
   
$matuni[9]  = "nueve"
   
$matuni[10] = "diez"
   
$matuni[11] = "once"
   
$matuni[12] = "doce"
   
$matuni[13] = "trece"
   
$matuni[14] = "catorce"
   
$matuni[15] = "quince"
   
$matuni[16] = "dieciseis"
   
$matuni[17] = "diecisiete"
   
$matuni[18] = "dieciocho"
   
$matuni[19] = "diecinueve"
   
$matuni[20] = "veinte"
   
$matunisub[2] = "dos"
   
$matunisub[3] = "tres"
   
$matunisub[4] = "cuatro"
   
$matunisub[5] = "quin"
   
$matunisub[6] = "seis"
   
$matunisub[7] = "sete"
   
$matunisub[8] = "ocho"
   
$matunisub[9] = "nove"

   
$matdec[2] = "veint"
   
$matdec[3] = "treinta"
   
$matdec[4] = "cuarenta"
   
$matdec[5] = "cincuenta"
   
$matdec[6] = "sesenta"
   
$matdec[7] = "setenta"
   
$matdec[8] = "ochenta"
   
$matdec[9] = "noventa"
   
$matsub[3]  = 'mill'
   
$matsub[5]  = 'bill'
   
$matsub[7]  = 'mill'
   
$matsub[9]  = 'trill'
   
$matsub[11] = 'mill'
   
$matsub[13] = 'bill'
   
$matsub[15] = 'mill'
   
$matmil[4]  = 'millones'
   
$matmil[6]  = 'billones'
   
$matmil[7]  = 'de billones'
   
$matmil[8]  = 'millones de billones'
   
$matmil[10] = 'trillones'
   
$matmil[11] = 'de trillones'
   
$matmil[12] = 'millones de trillones'
   
$matmil[13] = 'de trillones'
   
$matmil[14] = 'billones de trillones'
   
$matmil[15] = 'de billones de trillones'
   
$matmil[16] = 'millones de billones de trillones'

   
$num trim((string)@$num); 
   if (
$num[0] == '-') { 
      
$neg 'menos '
      
$num substr($num1); 
   }else 
      
$neg ''
   while (
$num[0] == '0'$num substr($num1); 
   if (
$num[0] < '1' or $num[0] > 9$num '0' $num
   
$zeros true
   
$punt false
   
$ent ''
   
$fra ''
   for (
$c 0$c strlen($num); $c++) { 
      
$n $num[$c]; 
      if (! (
strpos(".,'''"$n) === false)) { 
         if (
$punt) break; 
         else{ 
            
$punt true
            continue; 
         } 

      }elseif (! (
strpos('0123456789'$n) === false)) { 
         if (
$punt) { 
            if (
$n != '0'$zeros false
            
$fra .= $n
         }else 

            
$ent .= $n
      }else 

         break; 

   } 
   
$ent '     ' $ent
   if (
$dec and $fra and ! $zeros) { 
      
$fin ' coma'
      for (
$n 0$n strlen($fra); $n++) { 
         if ((
$s $fra[$n]) == '0'
            
$fin .= ' cero'
         elseif (
$s == '1'
            
$fin .= $fem ' una' ' un'
         else 
            
$fin .= ' ' $matuni[$s]; 
      } 
   }else 
      
$fin ''
   if ((int)
$ent === 0) return 'Cero ' $fin
   
$tex ''
   
$sub 0
   
$mils 0
   
$neutro false
   while ( (
$num substr($ent, -3)) != '   ') { 
      
$ent substr($ent0, -3); 
      if (++
$sub and $fem) { 
         
$matuni[1] = 'una'
         
$subcent 'as'
      }else{ 
         
$matuni[1] = $neutro 'un' 'uno'
         
$subcent 'os'
      } 
      
$t ''
      
$n2 substr($num1); 
      if (
$n2 == '00') { 
      }elseif (
$n2 21
         
$t ' ' $matuni[(int)$n2]; 
      elseif (
$n2 30) { 
         
$n3 $num[2]; 
         if (
$n3 != 0$t 'i' $matuni[$n3]; 
         
$n2 $num[1]; 
         
$t ' ' $matdec[$n2] . $t
      }else{ 
         
$n3 $num[2]; 
         if (
$n3 != 0$t ' y ' $matuni[$n3]; 
         
$n2 $num[1]; 
         
$t ' ' $matdec[$n2] . $t
      } 
      
$n $num[0]; 
      if (
$n == 1) { 
         
$t ' ciento' $t
      }elseif (
$n == 5){ 
         
$t ' ' $matunisub[$n] . 'ient' $subcent $t
      }elseif (
$n != 0){ 
         
$t ' ' $matunisub[$n] . 'cient' $subcent $t
      } 
      if (
$sub == 1) { 
      }elseif (! isset(
$matsub[$sub])) { 
         if (
$num == 1) { 
            
$t ' mil'
         }elseif (
$num 1){ 
            
$t .= ' mil'
         } 
      }elseif (
$num == 1) { 
         
$t .= ' ' $matsub[$sub] . '?n'
      }elseif (
$num 1){ 
         
$t .= ' ' $matsub[$sub] . 'ones'
      }   
      if (
$num == '000'$mils ++; 
      elseif (
$mils != 0) { 
         if (isset(
$matmil[$sub])) $t .= ' ' $matmil[$sub]; 
         
$mils 0
      } 
      
$neutro true
      
$tex $t $tex
   } 
   
$tex $neg substr($tex1) . $fin
   return 
ucfirst($tex); 


PD: lo malo que nunca vi (o no me acuerdo) de los creditos de esta funcion
__________________
Me junto con los que Saben, Queriendo Saber.
  #4 (permalink)  
Antiguo 28/11/2008, 15:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Generar su literal de un numero x en php

Puedes consultar las FAQs del foro, ya hay un aporte que hace lo que pides.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:00.