Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/04/2010, 11:35
maxwellxp
 
Fecha de Ingreso: abril-2010
Mensajes: 143
Antigüedad: 14 años
Puntos: 0
Respuesta: necesito funcion que convierta numeros a letra

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
  1. <?php
  2. /*!
  3.   @function num2letras ()
  4.   @abstract Dado un número lo devuelve escrito.
  5.   @param $num number - Número a convertir.
  6.   @param $fem bool - Forma femenina (true) o no (false).
  7.   @param $dec bool - Con decimales (true) o no (false).
  8.   @result string - Devuelve el número escrito en letra.
  9. */
  10. function num2letras($num, $fem = true, $dec = true) {
  11. //if (strlen($num) > 14) die("El número introducido es demasiado grande");
  12.    $matuni[2]  = "dos";
  13.    $matuni[3]  = "tres";
  14.    $matuni[4]  = "cuatro";
  15.    $matuni[5]  = "cinco";
  16.    $matuni[6]  = "seis";
  17.    $matuni[7]  = "siete";
  18.    $matuni[8]  = "ocho";
  19.    $matuni[9]  = "nueve";
  20.    $matuni[10] = "diez";
  21.    $matuni[11] = "once";
  22.    $matuni[12] = "doce";
  23.    $matuni[13] = "trece";
  24.    $matuni[14] = "catorce";
  25.    $matuni[15] = "quince";
  26.    $matuni[16] = "dieciseis";
  27.    $matuni[17] = "diecisiete";
  28.    $matuni[18] = "dieciocho";
  29.    $matuni[19] = "diecinueve";
  30.    $matuni[20] = "veinte";
  31.    $matunisub[2] = "dos";
  32.    $matunisub[3] = "tres";
  33.    $matunisub[4] = "cuatro";
  34.    $matunisub[5] = "quin";
  35.    $matunisub[6] = "seis";
  36.    $matunisub[7] = "sete";
  37.    $matunisub[8] = "ocho";
  38.    $matunisub[9] = "nove";
  39.    $matdec[2] = "veint";
  40.    $matdec[3] = "treinta";
  41.    $matdec[4] = "cuarenta";
  42.    $matdec[5] = "cincuenta";
  43.    $matdec[6] = "sesenta";
  44.    $matdec[7] = "setenta";
  45.    $matdec[8] = "ochenta";
  46.    $matdec[9] = "noventa";
  47.    $matsub[3]  = 'mill';
  48.    $matsub[5]  = 'bill';
  49.    $matsub[7]  = 'mill';
  50.    $matsub[9]  = 'trill';
  51.    $matsub[11] = 'mill';
  52.    $matsub[13] = 'bill';
  53.    $matsub[15] = 'mill';
  54.    $matmil[4]  = 'millones';
  55.    $matmil[6]  = 'billones';
  56.    $matmil[7]  = 'de billones';
  57.    $matmil[8]  = 'millones de billones';
  58.    $matmil[10] = 'trillones';
  59.    $matmil[11] = 'de trillones';
  60.    $matmil[12] = 'millones de trillones';
  61.    $matmil[13] = 'de trillones';
  62.    $matmil[14] = 'billones de trillones';
  63.    $matmil[15] = 'de billones de trillones';
  64.    $matmil[16] = 'millones de billones de trillones';
  65.    $num = trim((string)@$num);
  66.    if ($num[0] == '-') {
  67.       $neg = 'menos ';
  68.       $num = substr($num, 1);
  69.    }else
  70.       $neg = '';
  71.    while ($num[0] == '0') $num = substr($num, 1);
  72.    if ($num[0] < '1' or $num[0] > 9) $num = '0' . $num;
  73.    $zeros = true;
  74.    $punt = false;
  75.    $ent = '';
  76.    $fra = '';
  77.    for ($c = 0; $c < strlen($num); $c++) {
  78.       $n = $num[$c];
  79.       if (! (strpos(".,'''", $n) === false)) {
  80.          if ($punt) break;
  81.          else{
  82.             $punt = true;
  83.             continue;
  84.          }
  85.       }elseif (! (strpos('0123456789', $n) === false)) {
  86.          if ($punt) {
  87.             if ($n != '0') $zeros = false;
  88.             $fra .= $n;
  89.          }else
  90.             $ent .= $n;
  91.       }else
  92.          break;
  93.    }
  94.    
  95.    $ent = '     ' . $ent;
  96.    
  97.    if ($dec and $fra and ! $zeros) {
  98.       $fin = ' con';
  99.       for ($n = 0; $n < strlen($fra); $n++) {
  100.          if (($s = $fra[$n]) == '0')
  101.             $fin .= ' cero';
  102.          elseif ($s == '1')
  103.             $fin .= $fem ? ' uno' : ' un';
  104.          else
  105.             $fin .= ' ' . $matuni[$s];
  106.       }
  107.    }else
  108.       $fin = '';