Bienvenid@ webmaster Acceso Directo :
ir al home
Home
Productos y Servicios
Artículos y Secciones
Foros de Discusión
Registro de Usuarios
Usuarios
Canal del Webmaster
Contactos
©2004 Blasten.com
Envía tus Articulos


ArtículoComentariosRecomendarGuardarImprimir
Convertir n?meros a letrasResaltado
En esta Oportunidad crearemos una funcion que nos permitira cambiar el valor de un numero en digitos a texto, por ejemplo si un usuario escribe en un campo 5000 en pantalla saldra Cinco Mil, dicha funcion puede ser empleada para la realizacion de un carrito de compra u otro sistema similar, bien aqui la codificaci?n:


<?php 
/*! 
  @function num2letras () 
  @abstract Dado un n?mero lo devuelve escrito. 
  @param $num number - N?mero a convertir. 
  @param $fem bool - Forma femenina (true) o no (false). 
  @param $dec bool - Con decimales (true) o no (false). 
  @result string - Devuelve el n?mero escrito en letra. 

*/ 
function num2letras($num$fem true$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); 


?> 



Para ejecutar esta funcion se, debe llamar de la siguiente forma:

<? echo num2letras('15000'); ?> 

cabe destacar que la complejidad de esta funcion permite, no tiene ningun limite en la cadena de n?meros.




Artículos Relacionados
Obteniendo n?meros aleatorios (ASP)
Convertir lineas en rellenos (FLASH)
Covertir N?meros decimales a Romanos (PHP)
Convertir fechas entre MySQL y castellano, en PHP (PHP)

Más Artículos relacionados >>
Artículo anterior
Descargar este contenido

Autor: Webmaster
Fecha: 4/8/2004 (569 días) Lecturas : 22.481
Valoración :
Comentarios: 489

Pharmf959

Very nice site! cheap viagra ,
Valoración:
Pharmd622

Very nice site!
Valoración:
Pharmf689

Very nice site! cheap cialis http://opxaiey.com/oyyrsry/4.html
Valoración:
Pharmb584

Very nice site! [url=http://opxaiey.com/oyyrsry/2.html]cheap cialis[/url]
Valoración:
Pharmf303

Very nice site! cheap viagra
Valoración:
Pharmc633

Hello! dgbeddb interesting dgbeddb site!
Valoración:

Agregar a mi lista
Solicitar Ayuda


subir página
Los contenidos expuestos en blasten.com® son propiedad única de sus autores, por lo cual se prohíbe la reproducción total o parcial de los contenidos expuestos en este sitio sin previo consentimiento del autor y el editor. Para intercambios de contenidos haga clic aqui y contáctenos. El logotipo y el nombre BLASTEN así como todos los gráficos expuestos son propiedad exclusiva de este portal.
©2004-2005 blasten.com Network