bueno, encontre una funcion q lo hace bastante bien, pero quisiera q dsp de decir todo el numero cuando hay decimal termine diciendo "centavos"...
Código PHP:
Ver original<?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 ';
}else
$neg = '';
while ($num[0] == '0') $num = substr($num, 1); 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 = ' con';
for ($n = 0; $n < strlen($fra); $n++) { if (($s = $fra[$n]) == '0')
$fin .= ' cero';
elseif ($s == '1')
$fin .= $fem ? ' uno' : ' un';
else
$fin .= ' ' . $matuni[$s];
}
}else
$fin = '';