Código fuente Ya.

Puede ejecutar la o las páginas para probar el concepto inmediatamente.

 

Concepto:Convertir números a letras con PHP

El concepto trata sobre:php
Autor:

Retornar

Nombre del archivo:pagina1.php

Comentarios
Importamos el archivo que contiene la clase que convierte números a letras:
require("rutinas.php");
Creamos un objeto de la clase NumeroALetras:
$t=new NumerosALetras();
Para probar su funcionamiento generamos 24 números aleatorios comprendidos entre 1 y 99999999999,
luego llamamos al método traducir enviándole el número aleatorio:
for($f=1;$f<=24;$f++)
{
  $ale=rand(1,99999999999);
  echo $ale.' : '.$t->traducir($ale);
  echo '<br>';
  echo '<br>';
}
Nombre del archivo:rutinas.php

Comentarios
Lo primero que hace el método traducir es dividir en un vector la parte entera y la parte fraccionaria en caso
que exista:
    $partes=explode('.',$num);
Llamamos al método privado traduccionParcial enviándole la parte entera del número:
    $entera=$this->traduccionParcial($s);
Lo mismo se hace con el valor después del punto en caso que exista:
    if (count($partes)>1)
    {
      $entera=$entera.' con '.$partes[1];
    }

La función traduccionParcial genera un string agregando tantos ceros al principio como necesite, de tal 
manera que la cantidad de dígitos del número sea un múltiplo de 3.
    settype($s,'string');	
    $faltan=strlen($s) % 3;
    $cad='';
    if ($faltan!=0)
      $faltan=3-$faltan;
    for($f=1;$f<=$faltan;$f++)
    {
      $cad.='0';
    }
    $s=$cad.$s;
Luego de esto la variable $s seguro tiene una cantidad de dígitos múltiplo de 3.
Si $s tiene 3 caracteres y los tres son iguales a cero luego debe retornar cero:
    if (strlen($s)<=3 && $s[0]==0 && $s[1]==0 && $s[2]==0)
      $resu='cero';
sino extraemos los últimos tres caracteres del número y llamamos al método privado convertir que genera
una cadena con la conversión parcial de esos tres dígitos:
      $cad1=substr($s,strlen($s)-3,3);
      $resu=$this->convertir($cad1);
De forma similar si tiene más de tres dígitos el número extraemos los valores correspondientes y llamamos
al método convertir:
    if (strlen($s)>3)
    {
      $resu2='';
      $cad2=substr($s,strlen($s)-6,3);
      if ($cad2[0]==0 && $cad2[1]==0 && $cad2[2] ==1)
	$resu2='mil ';
      else	 
        if ($cad2[0]!=0 || $cad2[1]!=0 || $cad2[2] !=0)
          $resu2=$this->convertir($cad2,2).'mil ';
      $resu=$resu2.$resu; 		   
    }

Otro tanto hacemos si tiene más de 6 o 9 dígitos:
    if (strlen($s)>6)
    {
      $resu2='';
      $cad3=substr($s,strlen($s)-9,3);
      if ($cad3[0]=='0' && $cad3[1]=='0' && $cad3[2]==1)
	$resu2='un millón ';
      else	
  	if ($cad3[0]!=0 || $cad3[1]!=0 || $cad3[2] !=0)
          $resu2=$this->convertir($cad3,2).'millones ';
      $resu=$resu2.$resu;	   
    }

    if (strlen($s)>9)
    {
      $resu2='';
      $cad4=substr($s,strlen($s)-12,3);

      if ($cad4[0]=='0' && $cad4[1]=='0' && $cad4[2]==1)
      {
	if ($cad3[0]==0 && $cad3[1]==0 && $cad3[2]==0)
	  $resu2='mil millones ';
	else
	  $resu2='mil ';
      }	
      else	
	$resu2=$this->convertir($cad4,2).'mil millones '; 	   
      $resu=$resu2.$resu;	   
    }
 
El método convertir genera un valor parcial con el número de tres dígitos que recibe.

Retornar



Código Fuente Ya - 2015