Advertisement
napolux

From numbers to letters (italian language)

Mar 13th, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.91 KB | None | 0 0
  1. function traslitterazione($numero)
  2. {
  3.     $unita          = array("","uno","due","tre","quattro","cinque","sei","sette","otto","nove");
  4.     $decina1        = array("dieci","undici","dodici","tredici","quattordici","quindici","sedici","diciassette","diciotto","diciannove");
  5.     $decine         = array("","dieci","venti","trenta","quaranta","cinquanta","sessanta","settanta","ottanta","novanta");
  6.     $decineTroncate = array("","","vent","trent","quarant","cinquant","sessant","settant","ottant","novant");
  7.     $centinaia      = array("","cento","duecento","trecento","quattrocento","cinquecento","seicento","settecento","ottocento","novecento");
  8.  
  9.     // Inizializzo variabile contenente il risultato
  10.     $risultato = "";
  11.    
  12.     // Faccio padding a 9 cifre
  13.     $stringa = str_pad($numero, 9, "0", STR_PAD_LEFT);
  14.    
  15.     // Per ogni gruppo di tre cifre faccio il conto
  16.     for($i=0;$i<9;$i=$i+3)
  17.     {
  18.         // Uso una variabile temporanea
  19.         $tmp = "";
  20.        
  21.         // Centinaia
  22.         $tmp .= $centinaia[$stringa[$i]];      
  23.        
  24.         // Decine da 2 a 9
  25.         if($stringa[$i+1] != "1")
  26.         {
  27.             if($stringa[$i+2] == "1" || $stringa[$i+2] == "8")
  28.                 $tmp = $tmp . $decineTroncate[$stringa[$i+1]];     
  29.             else
  30.                 $tmp = $tmp . $decine[$stringa[$i+1]];     
  31.    
  32.             $tmp = $tmp . $unita[$stringa[$i+2]];  
  33.         }
  34.         else // Undici, dodici, tredici, ecc...
  35.         {
  36.             $tmp .= $decina1[$stringa[$i+2]];
  37.         }
  38.        
  39.        
  40.         // Aggiungo suffissi quando necessario
  41.         if($tmp != "" && $i==0)
  42.                     $tmp .= "milioni";
  43.  
  44.         if($tmp != "" && $i==3)
  45.                     $tmp .= "mila";
  46.  
  47.         // Aggiungo a risultato finale
  48.         $risultato .= $tmp;
  49.  
  50.        
  51.         // Sistemazione BUG - Caso speciale "mille" / "un milione"
  52.         if($i == 0 && $stringa[$i] == "0" && $stringa[$i+1] == "0")
  53.             $risultato = str_replace("unomilioni","unmilione",$risultato);
  54.         if($i == 3 && $stringa[$i] == "0" && $stringa[$i+1] == "0")
  55.             $risultato = str_replace("unomila","mille",$risultato);
  56.     }
  57.  
  58.     // ZERO!
  59.     if($risultato == "")
  60.         return "zero";
  61.     else
  62.         return  $risultato;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement