Conversion d'un montant en format alphabétique

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 027 fois - Téléchargée 14 fois

Contenu du snippet

<?php
    // retourne sous format alphabétique un chiffre de 1 à 100 (la correspondance du chiffre 1 n'est pas affichée)
    function unite($u){
  $str="";
  if ($u==1)$str="";if ($u==2)$str="deux";if ($u==3)$str="trois";if ($u==4)$str="quatre";if ($u==5)$str="cinq";
  if ($u==6)$str="six";if ($u==7)$str="sept";if ($u==8)$str="huit";if ($u==9)$str="neuf";if ($u==10)$str="dix";if ($u==11)$str="onze";
  if ($u==12)$str="douze";if ($u==13)$str="treize";if ($u==14)$str="quatorze";if ($u==15)$str="quinze";if ($u==16)$str="seize";if ($u==17)$str="dix-sept";
  if ($u==18)$str="dix-huit";if ($u==19)$str="dix-neuf";
  if ($u>=20 && $u<30){$str="vingt";if ($u-20==1) $str="vingt-et-un";elseif($u!=20) $str="vingt-".unite($u-20);}
  if ($u>=30 && $u<40){$str="trente";if ($u-30==1) $str="trente-et-un";elseif($u!=30) $str="trente-".unite($u-30);}
  if ($u>=40 && $u<50){$str="quarante";if ($u-40==1) $str="quarante-et-un";elseif($u!=40) $str="quarante-".unite($u-40);}
  if ($u>=50 && $u<60){$str="cinquante";if ($u-50==1) $str="cinquante-et-un";elseif($u!=50) $str="cinquante-".unite($u-50);}
  if ($u>=60 && $u<70){$str="soixante";if ($u-60==1) $str="soixante-et-un";elseif($u!=60) $str="soixante-".unite($u-60);}
  if ($u>=70 && $u<80){$str="soixante-dix";if ($u-70==1) $str="soixante-onze";elseif($u!=70) $str="soixante-".unite($u-70+10);}
  if ($u>=80 && $u<90){$str="quatre-vingt";if ($u-80==1) $str="quatre-vingt-et-un";elseif($u!=80) $str="quatre-vingt-".unite($u-80);}
  if ($u>=90 && $u<100){$str="quatre-vingt-dix";if ($u-90==1) $str="quatre-vingt-onze";elseif($u!=90) $str="quatre-vingt-".unite($u-90+10);}
  if ($u==100)$str="cent";
  return $str;
 }
    // retourne sous format alphabétique un chiffre de 0 à 999 999 999
    function montant_en_chiffre($val){
   $million = 0;
   $millier = 0;
   $centaine = 0;
   $dizaine = 0;
   $str = "";
   if ($val==1) $str = "un";
   if ($val==0) $str = "zéro";
   if ($val>=1000000){
    $nb_million = (int)($val/1000000);
    if ($nb_million!=0) $str .= montant_en_chiffre($nb_million)." million";
    $str.=" ".montant_en_chiffre($val-($nb_million*1000000));
    $val=0;
   }
   if ($val>=1000){
    $millier = (int)($val/1000);
    $centaine = (int)(($val - ($millier*1000))/100);
    $dizaine = $val-(($millier*1000)+($centaine*100));
   }
   if ($val<1000 && $val>=100){
    $centaine = (int)($val/100);
    $dizaine = (int)($val - ($centaine*100));
   }
   if ($val<1000 && $val<100){
    $dizaine = $val;
   }
   if ($millier!=0){
    if ($millier<=100){
     $str .=unite($millier)." mille ";
    }
    else{
     $cent= (int)($millier/100);
     $dix=$millier-$cent*100;
     $str .= unite($cent)." cent ".unite($dix)." mille ";
    } 
   }
   if ($centaine!=0){
     $str.=unite($centaine)." cent";
   }
   if ($dizaine!=0){
     $str.=" ".unite($dizaine);
     if ($dizaine==1) $str.=" un";
   }
   return $str;
 }
 
 // Test des fonctions
 echo montant_en_chiffre(32750);
 
?>

A voir également

Ajouter un commentaire Commentaires
xtreen Messages postés 24 Date d'inscription vendredi 12 octobre 2012 Statut Membre Dernière intervention 5 juillet 2015
3 oct. 2014 à 21:53
bien essayer!!!!!
jordane45 Messages postés 37506 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 mai 2023 341
Modifié par jordane45 le 16/09/2014 à 00:25
Bonjour
Tous ces IF ELSE IF.... ça pique un peu les yeux.
Quelques switch seraient les bienvenus.

Tu devrais jeter un oeil à cette source (à mon avis un peu plus complète)



http://codes-sources.commentcamarche.net/source/43095-convertir-un-chiffre-en-lettre-php
Whismeril Messages postés 18399 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 mai 2023 623
Modifié par Whismeril le 15/09/2014 à 21:53
Bonjour, description modifiée par l'ajout des balises de code.
Voir ici comment bien utiliser la coloration syntaxique.

Un petit texte expliquant à quoi le code sert et comment il marche serait le bienvenu surtout qu'il n'y a quasiment aucun commentaire.
Le partage de code a d'abord et avant tout un but pédagogique et jeter en pâture le snippet ne l'est pas.

Au fait les chiffres vont de 0 à 9 et sont les briques unitaires pour construire un nombre, comme la lettre pour le mot.
Ton code travaille donc sur des nombres et non des chiffres, même quand tu comptes 2 patates, il s'agit du nombre 2, écrit avec le chiffre 2.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.