Bonjour à tous
voici mon code pour convertir un montant en lettre
mon problème est: quand j'ai un montant par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 function int2str($a) { $convert = explode('.',$a); if (isset($convert[1]) && $convert[1]!=''){ return int2str($convert[0]).'Dinars'.' et '.int2str($convert[1]).'Centimes' ; } 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); } else if ($a==1000000){ return 'millions'; } else if ($a<2000000){ return int2str(1000000).' '.int2str($a%1000000).' '; } else if ($a<1000000000){ return int2str((int)($a/1000000)).' '.int2str(1000000).' '.int2str($a%1000000); } }
le résultat affiché est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 int2str(1522530 );
et si j'ai le montant 5522530 il m'affiche bien cinq millions cinq cent vingt-deux mille cinq cent trente
Code : Sélectionner tout - Visualiser dans une fenêtre à part millions cinq cent vingt-deux mille cinq cent trente
don si j'ai un million il m'"crit directement million sans le 'un'
merci à vous
Partager