[PHP] Convertir un chiffre en lettre

outhman83 Messages postés 9 Statut Membre -  
inegenieur180 Messages postés 1 Statut Membre -
bonjour ,je cherche un script php qui permet de convertir un chiffre en lettre.
Merci.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Airwolf77 Messages postés 2 Statut Membre 10
     
    Je te donne une vrai réponse (très tardive mais comme cela sort en 1 sur Google, je préfère une bonne réponse de suite) :

    <?php
    
    function int2str($a){
    	if ($a<0) return 'moins '.int2str(-$a);
    	if ($a<17){
    		switch ($a){
    			case 0: return 'zero';
    			case 1: return 'un';
    			case 2: return 'deux';
    			case 3: return 'trois';
    			case 4: return 'quatre';
    			case 5: return 'cinq';
    			case 6: return 'six';
    			case 7: return 'sept';
    			case 8: return 'huit';
    			case 9: return 'neuf';
    			case 10: return 'dix';
    			case 11: return 'onze';
    			case 12: return 'douze';
    			case 13: return 'treize';
    			case 14: return 'quatorze';
    			case 15: return 'quinze';
    			case 16: return 'seize';
    		}
    	} else if ($a<20){
    		return 'dix-'.int2str($a-10);
    	} else if ($a<100){
    		if ($a%10==0){
    			switch ($a){
    				case 20: return 'vingt';
    				case 30: return 'trente';
    				case 40: return 'quarante';
    				case 50: return 'cinquante';
    				case 60: return 'soixante';
    				case 70: return 'soixante-dix';
    				case 80: return 'quatre-vingt';
    				case 90: return 'quatre-vingt-dix';
    			}
    		} else if ($a<70){
    			return int2str($a-$a%10).' '.int2str($a%10);
    		} else if ($a<80){
    			return int2str(60).' '.int2str($a%20);
    		} else{
    			return int2str(80).' '.int2str($a%20);
    		}
    	} else if ($a==100){
    		return 'cent';
    	} else if ($a<200){
    		return int2str(100).' '.int2str($a%100);
    	} else if ($a<1000){
    		return int2str((int)($a/100)).' '.int2str(100).' '.int2str($a%100);
    	} else if ($a==1000){
    		return 'mille';
    	} else if ($a<2000){
    		return int2str(1000).' '.int2str($a%1000).' ';
    	} else if ($a<1000000){
    		return int2str((int)($a/1000)).' '.int2str(1000).' '.int2str($a%1000);
    	}  
    	//on pourrait pousser pour aller plus loin, mais c'est sans interret pour ce projet, et pas interessant, c'est pas non plus compliqué...
    }
    echo int2str("19994"); // et voilà ce que ca donne
    
    ?>
    8
    1. Joakim
       
      Petite correction : prise en charge des virgules et corrections d'orthographes....

      function int2str($a){
      $joakim = explode('.',$a);
      if (isset($joakim[1]) && $joakim[1]!=''){
      return int2str($joakim[0]).' virgule '.int2str($joakim[1]) ;
      }
      if ($a<0) return 'moins '.int2str(-$a);
      if ($a<17){
      switch ($a){
      case 0: return 'zero';
      case 1: return 'un';
      case 2: return 'deux';
      case 3: return 'trois';
      case 4: return 'quatre';
      case 5: return 'cinq';
      case 6: return 'six';
      case 7: return 'sept';
      case 8: return 'huit';
      case 9: return 'neuf';
      case 10: return 'dix';
      case 11: return 'onze';
      case 12: return 'douze';
      case 13: return 'treize';
      case 14: return 'quatorze';
      case 15: return 'quinze';
      case 16: return 'seize';
      }
      } else if ($a<20){
      return 'dix-'.int2str($a-10);
      } else if ($a<100){
      if ($a%10==0){
      switch ($a){
      case 20: return 'vingt';
      case 30: return 'trente';
      case 40: return 'quarante';
      case 50: return 'cinquante';
      case 60: return 'soixante';
      case 70: return 'soixante-dix';
      case 80: return 'quatre-vingt';
      case 90: return 'quatre-vingt-dix';
      }
      } elseif (substr($a, -1)==1){
      if( ((int)($a/10)*10)<70 ){
      return int2str((int)($a/10)*10).'-et-un';
      } elseif ($a==71) {
      return 'soixante-et-onze';
      } elseif ($a==81) {
      return 'quatre-vingt-un';
      } elseif ($a==91) {
      return 'quatre-vingt-onze';
      }
      } elseif ($a<70){
      return int2str($a-$a%10).'-'.int2str($a%10);
      } elseif ($a<80){
      return int2str(60).'-'.int2str($a%20);
      } else{
      return int2str(80).'-'.int2str($a%20);
      }
      } else if ($a==100){
      return 'cent';
      } else if ($a<200){
      return int2str(100).' '.int2str($a%100);
      } else if ($a<1000){
      return int2str((int)($a/100)).' '.int2str(100).' '.int2str($a%100);
      } else if ($a==1000){
      return 'mille';
      } else if ($a<2000){
      return int2str(1000).' '.int2str($a%1000).' ';
      } else if ($a<1000000){
      return int2str((int)($a/1000)).' '.int2str(1000).' '.int2str($a%1000);
      }
      }
      0
    2. xmondex
       
      Si on teste avec une valeur qui se termine par zéros:par ex 5000.Ca donne "cinq mille zero" .

      <?php
      function int2str($a){
      ...........................................
      .........................................

      } else if ($a<1000000){

      //ajoutez ceci
      if($a%1000!=0){
      $reste=int2str($a%1000);
      }
      else
      {$reste='';
      }


      return int2str((int)($a/1000)).' '.int2str(1000).' '.$reste;
      }
      }
      ?>
      0