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ú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>2 and $uni<>0) $resultado[$i] .=' Y ';
if (($uni>0) and ($doble>15) or ($dec==0)) {
if ($i==1 && $uni == 1) $resultado[$i].="UNO";
elseif ($i==2 && $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ÓN " : " MILLONES ";
break;
}
$resto-=$corte;
}
// Sacamos el resultado (primero invertimos el array)
$resultado_inv= array_reverse($resultado, TRUE);
$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