Bonjour,
J’ai un problème au niveau des chiffre 88 tous marche bien sauf quand il y a 88
Pouvez vous m’aidez SVP
<?php
function sommeEnLettres($nombre,$devise)
{
//On cr?e un tableau avec les unit?s
$unitesExp3 = array(
0 => 'euro',
3 => 'mille',
6 => 'million',
9 => 'milliard',
12 => 'billion',
15 => 'billiard',
18 => 'trillion',
21 => 'trilliard',
24 => 'quatrillion',
27 => 'quatrilliard',
30 => 'quintillion',
33 => 'quintilliard',
36 => 'sextillion',
39 => 'sextilliard',
);
if($devise
"USD") $unitesExp3[0] "dollar";
if($devise
"EUR") $sousUnite "centime"; elseif($devise == "USD") $sousUnite = "cent";
//On cr?e un tableau avec les 99 (100 avec zero) premiers nombres
$nombres_99 =
array("z?ro","un","deux","trois","quatre","cinq","six","sept","huit","neuf","dix","onze","douze","treize","quatorze","quinze","seize","dix-sept","dix-huit","dix-neuf","vingt");
$nombres_99[30] = "trente";
$nombres_99[40] = "quarante";
$nombres_99[50] = "cinquante";
$nombres_99[60] = "soixante";
$nombres_99[70] = "soixante-dix";
$nombres_99[71] = "soixante et onze";
$nombres_99[80] = "quatre-vingt";
for ($i=21;$i<=61;$i+=10)
{
$nombres_99[$i] = $nombres_99[$i - 1]." et un";
for ($j=1;$j<=8;$j++)
{
$k = $i + $j;
$nombres_99[$k] = $nombres_99[$i - 1]."-".$nombres_99[$j + 1];
}
}
for ($i=72;$i<=79;$i++)
{
$nombres_99[$i] = "soixante-".$nombres_99[$i-60];
}
for ($i=81;$i<=99;$i++) {
$nombres_99[$i] = "quatre-vingt-".$nombres_99[$i-80];
$i++;
}
//On d?finit $r qui est le $nombre ?crit en lettres
$r="";
//on recherche si ya une virgule
$virg = strpos($nombre,",",1);
//puis on cr?e un tableau avec la partie enti?re et la partie apr?s la virgule
if ($virg == 0) {
$partie[0] = $nombre;
$partie[1] = "00";
}
else
{
$partie = explode(",",$nombre);
}
//on regarde combien ya de chiffres dans chaque partie
$nombreChiffres = strlen($partie[0]);
//on fait en sorte qu'il y a un nombre de chiffres qui tombe sur un multiple de 3 pour les calculs
if($nombreChiffres % 3
1) {$partie[0] "00".$partie[0]; $nombreChiffres += 2;}
elseif($nombreChiffres % 3
2) {$partie[0] "0".$partie[0]; $nombreChiffres += 1;}
$i = $nombreChiffres;
while ($i>0)
{
$centaines = substr($partie[0],$nombreChiffres-$i,1);
$dizainesEtUnites = substr($partie[0],$nombreChiffres-$i+1,2);
if (substr($partie[0],$nombreChiffres-$i+1,1)==0){ $dizainesEtUnites = substr($partie[0],$nombreChiffres-$i+2,1);}
if ($dizainesEtUnites==0 && $centaines > 1)
{
$r = $r.$nombres_99[$centaines]." cent"; if ($i != 6) $r = $r."s "; else $r = $r." ";
}
else
{
if ($centaines
1) $r $r."cent ";
else
{
if ($centaines > 1) $r = $r.$nombres_99[$centaines]." cent ";
}
}
if ($dizainesEtUnites == 80 && $i != 6)
{
$r = $r.$nombres_99[$dizainesEtUnites]."s ".$unitesExp3[$i-3]."s ";
}
elseif ($dizainesEtUnites > 1)
{
$r = $r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";
}
elseif($dizainesEtUnites == 1)
{
if ($centaines > 0)
{
$r = $r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";
}
elseif ($i == 3)
{
$r
$r.$nombres_99[$dizainesEtUnites]." ".$unitesExp3[$i-3]; if ($partie[0] > 1) $r $r."s";
}
else
{
$r = $r.$unitesExp3[$i-3]." ";
}
}
elseif ($dizainesEtUnites == 0 && $centaines > 0)
{
$r = $r.$unitesExp3[$i-3]; if ($i != 6) $r = $r."s "; else $r = $r." ";
}
elseif ($i >
6 && substr($partie[0],$nombreChiffres-$i,$i) 0)
{
$r = $r."d'".$unitesExp3[0]."s";
break;
}
elseif ($nombreChiffres-$i
3 && substr($partie[0],$nombreChiffres-$i,$i) 0)
{
$r = $r.$unitesExp3[0]."s";
break;
}
$i -= 3;
}
if ($partie[0] == 0) $r = $nombres_99[0]." ".$unitesExp3[0];
//on passe aux centimes
$centimes = substr($partie[1],0,2);
if (substr($partie[1],0,1)==0){ $centimes = substr($partie[1],1,1);}
if ($centimes != 0)
{
$r = $r." et ";
if ($centimes == 80)
{
$r = $r.$nombres_99[$centimes]."s ".$sousUnite."s";
}
elseif ($centimes > 1)
{
$r = $r.$nombres_99[$centimes]." ".$sousUnite."s";
}
elseif($centimes == 1)
{
$r = $r.$nombres_99[$centimes]." ".$sousUnite;
}
}
//on supprime les espaces de d?but et de fin
$r1 = trim($r);
return($r);
}
echo '__ICI C\'EST BON__ ' .$totalEnLettres = sommeEnLettres(number_format('8887.87', 10, ',', ''),EUR);
?>
<?
echo '__MAIS LA PROBLEME AVEC 88__ ' .$totalEnLettres = sommeEnLettres(number_format('8888.88', 10, ',', ''),EUR);
?>
Afficher la suite