Foros del Web » Programando para Internet » PHP »

Pasar nuemro a letras?

Estas en el tema de Pasar nuemro a letras? en el foro de PHP en Foros del Web. se que a lo mejor este tema esta trillado, encontre en este foro un codigo que funciona bien pasa de numero a letras pero no ...
  #1 (permalink)  
Antiguo 21/02/2006, 06:24
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Pasar nuemro a letras?

se que a lo mejor este tema esta trillado, encontre en este foro un codigo que funciona bien pasa de numero a letras pero no los decimales solo entero por lo que necesito si se pueden tambien sacad los decimales de un numero real. El codigo que esta aqui en el foro es:

numero.inc.php

Código PHP:
<?php
function numerotexto ($numero

    
// Primero tomamos el numero y le quitamos los caracteres especiales y extras 
    // Dejando solamente el punto "." que separa los decimales 
    // Si encuentra mas de un punto, devuelve error. 
    // NOTA: Para los paises en que el punto y la coma se usan de forma 
    // inversa, solo hay que cambiar la coma por punto en el array de "extras" 
    // y el punto por coma en el explode de $partes 
     
    
$extras= array("/[\$]/","/ /","/,/","/-/"); 
    
$limpio=preg_replace($extras,"",$numero); 
    
$partes=explode(".",$limpio); 
    if (
count($partes)>2) { 
        return 
"Error, el n&uacute;mero no es correcto"
        exit(); 
    } 
     
    
// Ahora explotamos la parte del numero en elementos de un array que 
    // llamaremos $digitos, y contamos los grupos de tres digitos 
    // resultantes 
     
    
$digitos_piezas=chunk_split ($partes[0],1,"#"); 
    
$digitos_piezas=substr($digitos_piezas,0,strlen($digitos_piezas)-1); 
    
$digitos=explode("#",$digitos_piezas); 
    
$todos=count($digitos); 
    
$grupos=ceil (count($digitos)/3);
     
// comenzamos a dar formato a cada grupo 
     
    
$unidad = array   ('UN','DOS','TRES','CUATRO','CINTO','SEIS','SIETE','OCHO','NUEVE'); 
    
$decenas = array ('DIEZ','ONCE','DOCE''TRECE','CATORCE','QUINCE'); 
    
$decena = array   ('DIECI','VEINTI','TREINTA','CUARENTA','CINCUENTA','SESENTA','SETENTA','OCHENTA','NOVENTA'); 
    
$centena = array   ('CIENTO','DOSCIENTOS','TRESCIENTOS','CUATROCIENTOS','QUINIENTOS','SEISCIENTOS','SETECIENTOS','OCHOCIENTOS','NOVECIENTOS'); 
    
$resto=$todos
     
    for (
$i=1$i<=$grupos$i++) { 
         
        
// Hacemos el grupo 
        
if ($resto>=3) { 
            
$corte=3; } else { 
            
$corte=$resto
        } 
            
$offset=(($i*3)-3)+$corte
            
$offset=$offset*(-1);
        
// la siguiente seccion es una adaptacion de la contribucion de cofyman y JavierB 
         
        
$num=implode("",array_slice ($digitos,$offset,$corte)); 
        
$resultado[$i] = ""
        
$cen = (int) ($num 100);              //Cifra de las centenas 
        
$doble $num - ($cen*100);             //Cifras de las decenas y unidades 
        
$dec = (int)($num 10) - ($cen*10);    //Cifra de las decenas 
        
$uni $num - ($dec*10) - ($cen*100);   //Cifra de las unidades 
        
if ($cen 0) { 
           if (
$num == 100$resultado[$i] = "CIEN"
           else 
$resultado[$i] = $centena[$cen-1].' '
        }
//end if 
        
if ($doble>0) { 
           if (
$doble == 20) { 
              
$resultado[$i] .= " VEINTE"
           }elseif ((
$doble 16) and ($doble>9)) { 
              
$resultado[$i] .= $decenas[$doble-10]; 
           }else { 
              
$resultado[$i] .=' '$decena[$dec-1]; 
           }
//end if 
           
if ($dec>and $uni<>0$resultado[$i] .=' Y '
           if ((
$uni>0) and ($doble>15) or ($dec==0)) { 
              if (
$i==&& $uni == 1$resultado[$i].="UNO"
              elseif (
$i==&& $num == 1$resultado[$i].=""
              else 
$resultado[$i].=$unidad[$uni-1]; 
           }
       } 

        
// Le agregamos la terminacion del grupo 
        
switch ($i) { 
            case 
2
            
$resultado[$i].= ($resultado[$i]=="") ? "" " MIL "
            break; 
            case 
3
            
$resultado[$i].= ($num==1) ? " MILL&Oacute;N " " MILLONES "
            break; 
        } 
        
$resto-=$corte
    } 
     
    
// Sacamos el resultado (primero invertimos el array) 
    
$resultado_invarray_reverse($resultadoTRUE); 
    
$final=""
    foreach (
$resultado_inv as $parte){ 
        
$final.=$parte
    } 
    return 
$final


?>
numero.php

Código PHP:
<?php
include ("numeros.inc.php"); 
$numero=11252
//$numero="$ 6,125,652.11"; 

echo numerotexto($numero); 
echo 
"<br>" 
//numerotexto($ejemplo2); 

?>
alguien me puede ayudar plissss o decirme como puedo resolve mi problema
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 21/02/2006, 08:28
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Plissss sugerencia por favor
__________________
Miguel Padrón :cool:
  #3 (permalink)  
Antiguo 21/02/2006, 08:53
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 18 años, 3 meses
Puntos: 1
Bueno, si ese script convierte sólo números enteros, prodrías dividir el número en la parte entera y decimal y convertirlos por separado. Sería algo así:
Código PHP:
<?
....
$valor tu_numero;
$numero_separado explode(".",$valor);
$parteentera numerotexto($numero_separado[0]);
$partedecimal numerotexto($numero_separado[1]);
....
?>
Asi tendrás la parte entera en $parteentera y la decimal en $partedecimal. Espero que te sirva.

Saludos.
__________________
¿Se me entiende la letra?
  #4 (permalink)  
Antiguo 21/02/2006, 09:35
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Papa, gracias me funciona lo hice a parte llamando el inc, y me da lo que quiero gracias cualquier cosas me tendran por aqui
__________________
Miguel Padrón :cool:
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 22:00.