Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1670 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Nombre vers texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Nombre vers texte

n°1508770
benjones
Posté le 30-01-2007 à 17:40:48  profilanswer
 

Bonjour !

 

Dans un projet professionnel, il me fallait une fonction me permettant de traduire un nombre entier en toute lettre. Or, malgré mes recherches, je n'ai pu trouver de fonction de ce type toute faite.

 

Je vous transmet donc mon travail. N'ayant pas trouver de fonction, je l'ai faite moi-même. elle fonctionne bien d'après les tests que j'ai effectués et permet de transcrire n'importe quel entier >= 0 de n'importe quelle longueur.

 

J'aimerai que vous me fassiez parvenir vos remarques, bugs trouvés, optimisations, etc...
Sinon, vous pouvez utiliser cette fonction comme bon vous semble, c'est cadeau :p

 
Code :
  1. //****************************************************************************************************
  2. // DESCRIPTION : Cette fonction renvoie la chaine correspondant à un nombre (ex 5 => Cinq)
  3. // PARAMETRES : nombre
  4. // RETOUR : nombre en chaine
  5. //****************************************************************************************************
  6. function php_nombre_vers_lettres($nombre)
  7. {
  8.    // Ecriture du dictionnaire
  9.    $dico = Array(0 => "zéro",
  10.                  1 => "un",
  11.                  2 => "deux",
  12.                  3 => "trois",
  13.                  4 => "quatre",
  14.                  5 => "cinq",
  15.                  6 => "six",
  16.                  7 => "sept",
  17.                  8 => "huit",
  18.                  9 => "neuf",
  19.                  10 => "dix",
  20.                  20 => "vingt",
  21.                  30 => "trente",
  22.                  40 => "quarante",
  23.                  50 => "cinquante",
  24.                  60 => "soixante",
  25.                  70 => "soixante-dix",
  26.                  80 => "quatre-vingt",
  27.                  90 => "quatre-vingt-dix" );
  28.    // Ecriture des exceptions
  29.    $exceptions = Array(11 => "onze",12 => "douze",13 => "trieze",14 => "quatorze",15 => "quinze",16 => "seize" );
  30.      
  31.    $chaine = "";
  32.    if(strlen($nombre) == 1)
  33.    {
  34.       $chaine = $dico[$nombre];
  35.    }
  36.    elseif(strlen($nombre) > 1)
  37.    {
  38.       ///////////////////////////////
  39.       // Gestion des deux derniers
  40.       ///////////////////////////////
  41.       $sous_chaine = substr($nombre,-2,2);
  42.       // Est-ce une exception ?
  43.       if(in_array($sous_chaine, $exceptions))
  44.       {
  45.          $chaine .= $exceptions[$sous_chaine];
  46.       }
  47.       else
  48.       {
  49.          // Extraction de la dizaine
  50.          $dizaine = substr($sous_chaine,0,1);
  51.          $unite = substr($sous_chaine,1,1);
  52.          
  53.          // test du "et"
  54.          if(($unite == "1" ) && ($dizaine != "8" ))
  55.          {
  56.             $separateur = "-et-";
  57.          }
  58.          elseif($unite != "0" && $dizaine != "0" )
  59.          {
  60.             $separateur = "-";
  61.          }
  62.          else
  63.          {
  64.             $separateur = "";
  65.          }
  66.          
  67.          // Test de l'exception de la dizaine
  68.          if(($dizaine == "7" || $dizaine == "9" ) && ($unite != "0" ))
  69.          {
  70.             $unite_texte = ($unite != 0) ? (array_key_exists(($unite+10),$exceptions) ? $exceptions[($unite+10)] : ("dix-".$dico[substr($unite+10,1,1)])) : "";
  71.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)-10] : "";
  72.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  73.          }
  74.          elseif(array_key_exists($sous_chaine,$exceptions))
  75.          {
  76.             $chaine .= $exceptions[$sous_chaine];
  77.          }
  78.          else
  79.          {
  80.             $unite_texte = ($unite != 0) ? $dico[$unite] : "";
  81.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)] : "";
  82.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  83.          }
  84.       }
  85.      
  86.       ///////////////////////////////
  87.       // Gestion des unités supérieures
  88.       ///////////////////////////////
  89.       // Centaines
  90.       if(strlen($nombre) >= 3)
  91.       {
  92.          $sous_chaine = substr($nombre,-3,1);
  93.          if($sous_chaine == "0" )
  94.          {
  95.             $chaine = " ".$chaine;
  96.          }
  97.          elseif($sous_chaine == "1" )
  98.          {
  99.             $chaine = "cent ".$chaine;
  100.          }
  101.          else
  102.          {
  103.             $debut_chaine = $dico[$sous_chaine]."-cent ";
  104.             $chaine = $debut_chaine.$chaine;
  105.          }
  106.       }
  107.       // Milliers
  108.       if((strlen($nombre) >= 6) && (IntVal(substr($nombre,-6,3)) != 0))
  109.       {
  110.          $chaine = php_nombre_vers_lettres(substr($nombre,-6,3))." mille ".$chaine;
  111.       }
  112.       elseif((strlen($nombre) == 5) && (IntVal(substr($nombre,-5,2)) != 0))
  113.       {
  114.          $chaine = php_nombre_vers_lettres(substr($nombre,-5,2))." mille ".$chaine;
  115.       }
  116.       elseif((strlen($nombre) == 4) && (substr($nombre,-4,1) == "0" ))
  117.       {
  118.          if(substr($nombre,-4,1) == "1" )
  119.          {
  120.             $chaine = " mille ".$chaine;
  121.          }
  122.          else
  123.          {
  124.             $chaine = php_nombre_vers_lettres(substr($nombre,-4,1))." mille ".$chaine;
  125.          }
  126.       }
  127.       // Millions
  128.       if((strlen($nombre) >= 9) && (IntVal(substr($nombre,-9,3)) != 0))
  129.       {
  130.          $chaine = php_nombre_vers_lettres(substr($nombre,-9,3))." million ".$chaine;
  131.       }
  132.       elseif((strlen($nombre) == 8) && (IntVal(substr($nombre,-8,2)) != 0))
  133.       {
  134.          $chaine = php_nombre_vers_lettres(substr($nombre,-8,2))." million ".$chaine;
  135.       }
  136.       elseif((strlen($nombre) == 7) && (IntVal(substr($nombre,-7,1)) != 0))
  137.       {
  138.          $chaine = php_nombre_vers_lettres(substr($nombre,-7,1))." million ".$chaine;
  139.       }
  140.      
  141.       // Milliards
  142.       if(strlen($nombre) >= 12)
  143.       {
  144.          $chaine = php_nombre_vers_lettres(substr($nombre,-12,3))." milliard ".$chaine;
  145.       }
  146.       elseif(strlen($nombre) == 11)
  147.       {
  148.          $chaine = php_nombre_vers_lettres(substr($nombre,-11,2))." milliard ".$chaine;
  149.       }
  150.       elseif(strlen($nombre) == 10)
  151.       {
  152.          $chaine = php_nombre_vers_lettres(substr($nombre,-10,1))." milliard ".$chaine;
  153.       }
  154.      
  155.       // Vers l'infini et au delà !
  156.       if(strlen($nombre) > 12)
  157.       {
  158.          $chaine = php_nombre_vers_lettres(substr($nombre,0,-13))." ".$chaine;
  159.       }
  160.    }
  161.    // Retour du résultat
  162.    return $chaine;
  163. }
 

Merci, A+ ;)


Message édité par benjones le 30-01-2007 à 17:45:29
mood
Publicité
Posté le 30-01-2007 à 17:40:48  profilanswer
 

n°1508786
omega2
Posté le 30-01-2007 à 18:14:01  profilanswer
 

petite remarque : 2000 devrait donner "deux milles" et non "deux mille" comme ton code semble le faire si j'ai vu. idem pour les centaines, les autres milliers, les millions ...

n°1508882
red factio​n
Posté le 30-01-2007 à 23:19:50  profilanswer
 

ton code me parait bine long pour faire bien peut de choses.... (debutant?)

n°1508934
soju
One shot !
Posté le 31-01-2007 à 08:58:24  profilanswer
 

omega2 a écrit :

2000 devrait donner "deux milles" et non "deux mille"

exception pour mille qui est invariable  ;)  

n°1508942
benjones
Posté le 31-01-2007 à 09:41:23  profilanswer
 

Merci pour vos remarques. Non je ne suis pas débutant, mais manque de temps surtout ^^
C'est aussi pour cela que j'ai posté ma fonction pour essayer de l'améliorer. Ceci n'est qu'une première ébauche.
 
red faction, as-tu des idées qui pourrait me permettre de réduire la taille de ma fonction ? Merci.

n°1509021
nycius
Ich liebe dich !
Posté le 31-01-2007 à 11:41:18  profilanswer
 

red faction a écrit :

ton code me parait bine long pour faire bien peut de choses.... (debutant?)


 
Propose quelque chose de plus simple alors ?
 
critique c'est bien mais proposé quelque chose c'est beaucoup mieux  :sarcastic:

n°1509026
nycius
Ich liebe dich !
Posté le 31-01-2007 à 11:45:15  profilanswer
 

benjones a écrit :

Merci pour vos remarques. Non je ne suis pas débutant, mais manque de temps surtout ^^
C'est aussi pour cela que j'ai posté ma fonction pour essayer de l'améliorer. Ceci n'est qu'une première ébauche.
 
red faction, as-tu des idées qui pourrait me permettre de réduire la taille de ma fonction ? Merci.


 
Ca ne marche pas pour 2000 par exemple chez moi

n°1509050
benjones
Posté le 31-01-2007 à 12:05:37  profilanswer
 

Oui très juste ;)
 
Merci beaucoup pour ta remarque. Un == au lieu de != ^^
Voici la correction :
 

Code :
  1. //****************************************************************************************************
  2. // DESCRIPTION : Cette fonction renvoie la chaine correspondant à un nombre (ex 5 => Cinq)
  3. // PARAMETRES : nombre
  4. // RETOUR : nombre en chaine
  5. //****************************************************************************************************
  6. function php_nombre_vers_lettres($nombre)
  7. {
  8.    // Ecriture du dictionnaire
  9.    $dico = Array(0 => "zéro",
  10.                  1 => "un",
  11.                  2 => "deux",
  12.                  3 => "trois",
  13.                  4 => "quatre",
  14.                  5 => "cinq",
  15.                  6 => "six",
  16.                  7 => "sept",
  17.                  8 => "huit",
  18.                  9 => "neuf",
  19.                  10 => "dix",
  20.                  20 => "vingt",
  21.                  30 => "trente",
  22.                  40 => "quarante",
  23.                  50 => "cinquante",
  24.                  60 => "soixante",
  25.                  70 => "soixante-dix",
  26.                  80 => "quatre-vingt",
  27.                  90 => "quatre-vingt-dix" );
  28.    // Ecriture des exceptions
  29.    $exceptions = Array(11 => "onze",12 => "douze",13 => "trieze",14 => "quatorze",15 => "quinze",16 => "seize" );
  30.        
  31.    $chaine = "";
  32.    if(strlen($nombre) == 1)
  33.    {
  34.       $chaine = $dico[$nombre];
  35.    }
  36.    elseif(strlen($nombre) > 1)
  37.    {
  38.       ///////////////////////////////
  39.       // Gestion des deux derniers
  40.       ///////////////////////////////
  41.       $sous_chaine = substr($nombre,-2,2);
  42.       // Est-ce une exception ?
  43.       if(in_array($sous_chaine, $exceptions))
  44.       {
  45.          $chaine .= $exceptions[$sous_chaine];
  46.       }
  47.       else
  48.       {
  49.          // Extraction de la dizaine
  50.          $dizaine = substr($sous_chaine,0,1);
  51.          $unite = substr($sous_chaine,1,1);
  52.          
  53.          // test du "et"
  54.          if(($unite == "1" ) && ($dizaine != "8" ))
  55.          {
  56.             $separateur = "-et-";
  57.          }
  58.          elseif($unite != "0" && $dizaine != "0" )
  59.          {
  60.             $separateur = "-";
  61.          }
  62.          else
  63.          {
  64.             $separateur = "";
  65.          }
  66.          
  67.          // Test de l'exception de la dizaine
  68.          if(($dizaine == "7" || $dizaine == "9" ) && ($unite != "0" ))
  69.          {
  70.             $unite_texte = ($unite != 0) ? (array_key_exists(($unite+10),$exceptions) ? $exceptions[($unite+10)] : ("dix-".$dico[substr($unite+10,1,1)])) : "";
  71.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)-10] : "";
  72.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  73.          }
  74.          elseif(array_key_exists($sous_chaine,$exceptions))
  75.          {
  76.             $chaine .= $exceptions[$sous_chaine];
  77.          }
  78.          else
  79.          {
  80.             $unite_texte = ($unite != 0) ? $dico[$unite] : "";
  81.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)] : "";
  82.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  83.          }
  84.       }
  85.        
  86.       ///////////////////////////////
  87.       // Gestion des unités supérieures
  88.       ///////////////////////////////
  89.       // Centaines
  90.       if(strlen($nombre) >= 3)
  91.       {
  92.          $sous_chaine = substr($nombre,-3,1);
  93.          if($sous_chaine == "0" )
  94.          {
  95.             $chaine = " ".$chaine;
  96.          }
  97.          elseif($sous_chaine == "1" )
  98.          {
  99.             $chaine = "cent ".$chaine;
  100.          }
  101.          else
  102.          {
  103.             $debut_chaine = $dico[$sous_chaine]."-cent ";
  104.             $chaine = $debut_chaine.$chaine;
  105.          }
  106.       }
  107.       // Milliers
  108.       if((strlen($nombre) >= 6) && (IntVal(substr($nombre,-6,3)) != 0))
  109.       {
  110.          $chaine = php_nombre_vers_lettres(substr($nombre,-6,3))." mille ".$chaine;
  111.       }
  112.       elseif((strlen($nombre) == 5) && (IntVal(substr($nombre,-5,2)) != 0))
  113.       {
  114.          $chaine = php_nombre_vers_lettres(substr($nombre,-5,2))." mille ".$chaine;
  115.       }
  116.       elseif((strlen($nombre) == 4) && (substr($nombre,-4,1) != "0" ))
  117.       {
  118.          if(substr($nombre,-4,1) == "1" )
  119.          {
  120.             $chaine = " mille ".$chaine;
  121.          }
  122.          else
  123.          {
  124.             $chaine = php_nombre_vers_lettres(substr($nombre,-4,1))." mille ".$chaine;
  125.          }
  126.       }
  127.       // Millions
  128.       if((strlen($nombre) >= 9) && (IntVal(substr($nombre,-9,3)) != 0))
  129.       {
  130.          $chaine = php_nombre_vers_lettres(substr($nombre,-9,3))." million ".$chaine;
  131.       }
  132.       elseif((strlen($nombre) == 8) && (IntVal(substr($nombre,-8,2)) != 0))
  133.       {
  134.          $chaine = php_nombre_vers_lettres(substr($nombre,-8,2))." million ".$chaine;
  135.       }
  136.       elseif((strlen($nombre) == 7) && (IntVal(substr($nombre,-7,1)) != 0))
  137.       {
  138.          $chaine = php_nombre_vers_lettres(substr($nombre,-7,1))." million ".$chaine;
  139.       }
  140.        
  141.       // Milliards
  142.       if(strlen($nombre) >= 12)
  143.       {
  144.          $chaine = php_nombre_vers_lettres(substr($nombre,-12,3))." milliard ".$chaine;
  145.       }
  146.       elseif(strlen($nombre) == 11)
  147.       {
  148.          $chaine = php_nombre_vers_lettres(substr($nombre,-11,2))." milliard ".$chaine;
  149.       }
  150.       elseif(strlen($nombre) == 10)
  151.       {
  152.          $chaine = php_nombre_vers_lettres(substr($nombre,-10,1))." milliard ".$chaine;
  153.       }
  154.        
  155.       // Vers l'infini et au delà !
  156.       if(strlen($nombre) > 12)
  157.       {
  158.          $chaine = php_nombre_vers_lettres(substr($nombre,0,-13))." ".$chaine;
  159.       }
  160.    }
  161.    // Retour du résultat
  162.    return $chaine;
  163. }


n°1509126
soju
One shot !
Posté le 31-01-2007 à 14:22:42  profilanswer
 

red faction a écrit :

bon j'ai pas tout testé, fait comme ca from scratch en 5min...

from scratch ou from http://fr.php.net/dechex#60158 ?
 
sinon ça a l'air pas mal mais manque la gestion des exceptions comme 91 (quatre-vingt-dix un) par exemple

n°1509166
red factio​n
Posté le 31-01-2007 à 15:10:41  profilanswer
 
mood
Publicité
Posté le 31-01-2007 à 15:10:41  profilanswer
 

n°1509177
soju
One shot !
Posté le 31-01-2007 à 15:19:56  profilanswer
 

dommage d'avoir effacer ton code (efficace au passage) ainsi que l'insulte...
 
voici le code en question pour ceux que ça interesse

Code :
  1. function decrom($dec) {
  2. $digits=array(
  3.     1 => "un",
  4.     2 => "deux",
  5.     3 => "trois",
  6.     4 => "quatre",
  7.     5 => "cinq",
  8.     6 => "six",
  9.     7 => "sept",
  10.     8 => "huit",
  11.     9 => "neuf",
  12.     10 => "dix",
  13.     11 => "onze",
  14.     12 => "douze",
  15.     13 => "treize",
  16.     14 => "quatorze",
  17.     15 => "quinze",
  18.     16 => "seize",
  19.     17 => "dix-sept",
  20.     18 => "dix-huit",
  21.     19 => "dix-neuf",
  22.     20 => "vingt",
  23.     30 => "trente",
  24.     40 => "quarante",
  25.     50 => "cinquante",
  26.     60 => "soixante",
  27.     70 => "soixante-dix",
  28.     80 => "quatre-vingt",
  29.     90 => "quatre-vingt-dix",
  30.     100 => "cent",
  31.     1000 => "mille",
  32.     1000000 => "million",
  33.     1000000000 => "milliard"
  34. );
  35. krsort($digits);
  36. $retval="";
  37. foreach($digits as $key => $value){
  38.  $l=0;
  39.  while($dec>=$key){
  40.   $dec-=$key;
  41.   $l++;         
  42.  }
  43.  if($l>1 || ($key>=1000000 && $l!=0)) $retval.=decrom($l).' '.$value.' ';
  44.  else  if($l==1) $retval.=$value.' ';                 
  45. }
  46. return $retval;
  47. }

n°1509190
red factio​n
Posté le 31-01-2007 à 15:32:05  profilanswer
 

va te pendre

n°1509204
benou
Posté le 31-01-2007 à 15:55:24  profilanswer
 

red faction> calmos ...  [:shakalagoons]


---------------
ma vie, mon oeuvre - HomePlayer
n°1509205
benjones
Posté le 31-01-2007 à 15:57:12  profilanswer
 

Merci pour ce morceau de code, mais je n'arrive pas à ajouter la gestion des exceptions sans en revenir à ma première version (ou presque)... Je vais essayer d'approfondir dès que j'ai plus de temps.
 
Merci.

n°1509239
benjones
Posté le 31-01-2007 à 17:10:54  profilanswer
 

J'ai ajouté le support des "s" à ma fonction actuelle :p
 
Merci à omega2 et soju pour la remarque.
 

Code :
  1. //****************************************************************************************************
  2. // DESCRIPTION : Cette fonction renvoie la chaine correspondant à un nombre (ex 5 => Cinq)
  3. // PARAMETRES : nombre
  4. // RETOUR : nombre en chaine
  5. //****************************************************************************************************
  6. function php_nombre_vers_lettres($nombre)
  7. {
  8.    // Ecriture du dictionnaire
  9.    $dico = Array(0 => "zéro",
  10.                  1 => "un",
  11.                  2 => "deux",
  12.                  3 => "trois",
  13.                  4 => "quatre",
  14.                  5 => "cinq",
  15.                  6 => "six",
  16.                  7 => "sept",
  17.                  8 => "huit",
  18.                  9 => "neuf",
  19.                  10 => "dix",
  20.                  20 => "vingt",
  21.                  30 => "trente",
  22.                  40 => "quarante",
  23.                  50 => "cinquante",
  24.                  60 => "soixante",
  25.                  70 => "soixante-dix",
  26.                  80 => "quatre-vingt",
  27.                  90 => "quatre-vingt-dix" );
  28.    // Ecriture des exceptions
  29.    $exceptions = Array(11 => "onze",12 => "douze",13 => "trieze",14 => "quatorze",15 => "quinze",16 => "seize" );
  30.        
  31.    $chaine = "";
  32.    if(strlen($nombre) == 1)
  33.    {
  34.       $chaine = $dico[$nombre];
  35.    }
  36.    elseif(strlen($nombre) > 1)
  37.    {
  38.       ///////////////////////////////
  39.       // Gestion des deux derniers
  40.       ///////////////////////////////
  41.       $sous_chaine = substr($nombre,-2,2);
  42.       // Est-ce une exception ?
  43.       if(in_array($sous_chaine, $exceptions))
  44.       {
  45.          $chaine .= $exceptions[$sous_chaine];
  46.       }
  47.       else
  48.       {
  49.          // Extraction de la dizaine
  50.          $dizaine = substr($sous_chaine,0,1);
  51.          $unite = substr($sous_chaine,1,1);
  52.          
  53.          // test du "et"
  54.          if(($unite == "1" ) && ($dizaine != "8" ))
  55.          {
  56.             $separateur = "-et-";
  57.          }
  58.          elseif($unite != "0" && $dizaine != "0" )
  59.          {
  60.             $separateur = "-";
  61.          }
  62.          else
  63.          {
  64.             $separateur = "";
  65.          }
  66.          
  67.          // Test de l'exception de la dizaine
  68.          if(($dizaine == "7" || $dizaine == "9" ) && ($unite != "0" ))
  69.          {
  70.             $unite_texte = ($unite != 0) ? (array_key_exists(($unite+10),$exceptions) ? $exceptions[($unite+10)] : ("dix-".$dico[substr($unite+10,1,1)])) : "";
  71.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)-10] : "";
  72.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  73.          }
  74.          elseif(array_key_exists($sous_chaine,$exceptions))
  75.          {
  76.             $chaine .= $exceptions[$sous_chaine];
  77.          }
  78.          else
  79.          {
  80.             $unite_texte = ($unite != 0) ? $dico[$unite] : "";
  81.             $dizaine_texte = ($dizaine != 0) ? $dico[($dizaine*10)] : "";
  82.             $chaine .= $dizaine_texte.$separateur.$unite_texte;
  83.          }
  84.       }
  85.        
  86.       ///////////////////////////////
  87.       // Gestion des unités supérieures
  88.       ///////////////////////////////
  89.       // Centaines
  90.       if(strlen($nombre) >= 3)
  91.       {
  92.          $sous_chaine = substr($nombre,-3,1);
  93.          if($sous_chaine == "0" )
  94.          {
  95.             $chaine = " ".$chaine;
  96.          }
  97.          elseif($sous_chaine == "1" )
  98.          {
  99.             $chaine = "cent ".$chaine;
  100.          }
  101.          else
  102.          {
  103.             $debut_chaine = $dico[$sous_chaine]."-cents ";
  104.             $chaine = $debut_chaine.$chaine;
  105.          }
  106.       }
  107.       // Milliers
  108.       if((strlen($nombre) >= 6) && (IntVal(substr($nombre,-6,3)) != 0))
  109.       {
  110.          $chaine = php_nombre_vers_lettres(substr($nombre,-6,3))." mille ".$chaine;
  111.       }
  112.       elseif((strlen($nombre) == 5) && (IntVal(substr($nombre,-5,2)) != 0))
  113.       {
  114.          $chaine = php_nombre_vers_lettres(substr($nombre,-5,2))." mille ".$chaine;
  115.       }
  116.       elseif((strlen($nombre) == 4) && (substr($nombre,-4,1) != "0" ))
  117.       {
  118.          if(substr($nombre,-4,1) == "1" )
  119.          {
  120.             $chaine = " mille ".$chaine;
  121.          }
  122.          else
  123.          {
  124.             $chaine = php_nombre_vers_lettres(substr($nombre,-4,1))." mille ".$chaine;
  125.          }
  126.       }
  127.       // Millions
  128.       if((strlen($nombre) >= 9) && (IntVal(substr($nombre,-9,3)) != 0))
  129.       {
  130.          $chaine = php_nombre_vers_lettres(substr($nombre,-9,3))." millions ".$chaine;
  131.       }
  132.       elseif((strlen($nombre) == 8) && (IntVal(substr($nombre,-8,2)) != 0))
  133.       {
  134.          $chaine = php_nombre_vers_lettres(substr($nombre,-8,2))." millions ".$chaine;
  135.       }
  136.       elseif((strlen($nombre) == 7) && (IntVal(substr($nombre,-7,1)) != 0))
  137.       {
  138.          $s = (substr($nombre,-7,1) > 1) ? "s" : "";
  139.          $chaine = php_nombre_vers_lettres(substr($nombre,-7,1))." million{$s} ".$chaine;
  140.       }
  141.        
  142.       // Milliards
  143.       if(strlen($nombre) >= 12)
  144.       {
  145.          $chaine = php_nombre_vers_lettres(substr($nombre,-12,3))." milliard ".$chaine;
  146.       }
  147.       elseif(strlen($nombre) == 11)
  148.       {
  149.          $chaine = php_nombre_vers_lettres(substr($nombre,-11,2))." milliard ".$chaine;
  150.       }
  151.       elseif(strlen($nombre) == 10)
  152.       {
  153.          $s = (substr($nombre,-10,1) > 1) ? "s" : "";
  154.          $chaine = php_nombre_vers_lettres(substr($nombre,-10,1))." milliard{$s} ".$chaine;
  155.       }
  156.        
  157.       // Vers l'infini et au delà !
  158.       if(strlen($nombre) > 12)
  159.       {
  160.          $chaine = php_nombre_vers_lettres(substr($nombre,0,-13))." ".$chaine;
  161.       }
  162.    }
  163.    // Retour du résultat
  164.    return $chaine;
  165. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Nombre vers texte

 

Sujets relatifs
nombre d'enregistrements limite dans sqlcss: varier la position en hauteur d'une bannière selon le texte.
[css] décalge du texte mais pas partout.Nombre d'occurences => toujours besoin d'aide
C++ Conversion de string vers longPHP et les fichiers texte
données fichier texte vers BDD[Résolu] [MySQL] Problème nombre commençant par zéro
callback vers un fonction membre, sans parametre "user" 
Plus de sujets relatifs à : Nombre vers texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR