Convertir un chiffre en lettre

souriante2011 -  
 souriante2011 -
Bonjour,
Merci de m'aider à trouver une fonction en php qui convertit des chiffres en lettres.
Exp:
203.10 ---> deux cent trois virgule dix
Merci encore une fois
à bientôt
A voir également:

8 réponses

Erolys Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   6
 
0
bono89 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   33
 
Je crais que ca ne soit pas vraiment possible de convertir un nombre en toute lettre automatiquement, la fonction replace ne permet pas de convertir automatiquement un nombre en string. Mais juste de remplacer une chaine par une autre dont on connait deja le contenu.
0
Erolys Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   6
 
On connais déjà le contenu o_o
1 -> un
2 -> deux
...

ça risque d'être long et fastidieux mais en traitement de caractères et avec une bonne méthode il est tout à fait possible de réaliser tout ça. Certes la patience est de rigueur et le courage aussi mais des alternatives existes ;)
0
bono89 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   33
 
J'ai un doute sur l'efficacité ! Mais pourquoi pas ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Erolys Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   6
 
Je t'avouerais que moi aussi ^^
0
bono89 Messages postés 39 Date d'inscription   Statut Membre Dernière intervention   33
 
On peut traiter par dizaine, en comptant le nombre de caractère avant la virgule.

Exemple 1350000,50

On sait que le 7 ème caractère avant la virgule (soit le premier) est la barre des million donc on affiche un million, ou deux ou trois suivant le premier chiffre, mais c'est pas optimal du fait que on va pas traiter une infinité de chiffre... Après si c'est des nombres inférieur à 1000 c'est faisable. Mais là où ça deviendrait compliqué c'est par exemple 101901, comme il saurait que le 2ème 1 doit être interprété comme "un mille". Algorithmiquement parlant, c'est pas concevable :D
0
Erolys Messages postés 32 Date d'inscription   Statut Membre Dernière intervention   6
 
c'est ce à quoi je pensais xD
0
souriante2011
 
Bonjour merci pour vos réponses
j'ai trouvé une fonction qui marche bien mais tjrs j'ai un petit problème,
lorsque je veux convertir 10.40 il me donne dix virgule quatre; donc il ne prend le 0 aprés le 4
Merci encore une fois,le script est :
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