Convertisseur montant --> text

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 454 fois - Téléchargée 31 fois

Contenu du snippet

Ce script à besoin de 3 infos :
- 1 montant en format xxxxxxxx.xx
- 1 monnaie en format EUR - GBP - CAD - USD
- 1 langue en format fr - en
Il donne une chaine de caractère avec le montant en lettre

Source / Exemple :


<?php

// fonction pour transformer les montants chiffre => montant en lettre
function convertir($Montant,$Monnaie,$Langue){

	// Valeur en anglais et en français
	if ($Langue == "en"){
		$grade = array(0 => "Zero ",1=>" Billions ",2=>" Millions ",3=>" Thousands ");
	}else{
		$grade = array(0 => "Zero ",1=>" Milliards ",2=>" Millions ",3=>" Mille ");
	}
	
	// les différente Monnaie
	if ($Monnaie == "USD"){
		$Mon = array(0=>" Dollar",1=>" Dollars",2=>" Cent",3=>" Cents");
	}elseif ($Monnaie == "CAD"){
		$Mon = array(0=>" Dollar",1=>" Dollars",2=>" Cent",3=>" Cents");
	}elseif ($Monnaie == "GBP"){
		$Mon = array(0=>" Pound",1=>" Pounds",2=>" Penny",3=>" Pence");
	}else{
		$Mon = array(0=>" Euro",1=>" Euros",2=>" Cent",3=>" Cents");
	}

	// Mise au format pour les chéque et le SWI

	$Montant = number_format($Montant,2,".","");

	// Si montant = Zero
	if ($Montant == 0){
		$result = $grade[0].$Mon[0];
	}else{

		$result = "";

		// Calcule des Unités
		$montant = intval($Montant);

		// Calcule des centimes
		$centime = round(($Montant * 100) - ($montant * 100),0);

		// Traitement pour les Milliards
		$nombre = $montant / 1000000000;
		$nombre = intval($nombre);
		if ($nombre > 0){
			if ($nombre > 1){
				$result = $result.cenvtir($nombre,$Langue).$grade[1];
			}else{
				if ($Langue == "en"){
					$result = $result." One ".$grade[1];
					$result = substr($result,0,13)." ";
				}else{
					$result = $result." Un ".$grade[1];
					$result = substr($result,0,13)." ";
				}
			}
			$montant = $montant - ($nombre * 1000000000);
		}

		// Traitement pour les Millions
		$nombre = $montant / 1000000;
		$nombre = intval($nombre);
		if ($nombre > 0){
			if ($nombre > 1){
				$result = $result.cenvtir($nombre,$Langue).$grade[2];
			}else{
				if ($Langue == "en"){
					$result = $result." One ".$grade[2];
					$result = substr($result,0,13)." ";
				}else{
					$result = $result." Un ".$grade[2];
					$result = substr($result,0,12)." ";
				}
			}
			$montant = $montant - ($nombre * 1000000);
		}

		// Traitement pour les Milliers
		$nombre = $montant / 1000;
		$nombre = intval($nombre);
		if ($nombre > 0){
			if ($nombre > 1){
				$result = $result.cenvtir($nombre,$Langue).$grade[3];
			}else{
				if ($Langue == "en"){
					$result = $result." One ".$grade[3];
					$result = substr($result,0,12)." ";
				}else{
					$result = $result.$grade[3];
				}
			}
			$montant = $montant - ($nombre * 1000);
		}

		// Traitement pour les Centaines & centimes
		$nombre = $montant;
		if ($nombre>0){
			$result = $result.cenvtir($nombre,$Langue);
		}

		// Traitement si le montant = 1
		if ((substr($result,0,6) == " et Un" and strlen($result) == 6) or (substr($result,0,4) == " One" and strlen($result) == 4)){
			if ($Langue != "en"){
				$result = substr($result,3,3);
			}
			$result = $result.$Mon[0];
			if (intval($centime) != 0){
				$differ = cenvtir(intval($centime),$Langue);
				if (substr($differ,0,6) == " et Un" or substr($differ,0,4) == " One"){
					if ($result != ""){
						if ($Langue == "en"){
							$differ = " and ".$differ;
						}
					}else{
						if ($Langue != "en"){
							$differ = substr($differ,3);
						}
					}
					$result = $result." ".$differ.$Mon[2];
				}else{
					if ($Langue != "en"){
						$result = $result." et ".$differ.$Mon[3];
					}else{
						$result = $result." and ".$differ.$Mon[3];
					}
				}
			}
		// Traitement si le montant > 1 ou = 0
		}else{
			if ($result != ""){
				$result = $result.$Mon[1];
			}
			if (intval($centime) != 0){
				$differ = cenvtir(intval($centime),$Langue);
				if (substr($differ,0,6) == " et Un" or substr($differ,0,4) == " One"){
					if ($result != ""){
						if ($Langue == "en"){
							$differ = " and ".$differ;
						}
					}else{
						if ($Langue != "en"){
							$differ = substr($differ,3);
						}
					}
					$result = $result." ".$differ.$Mon[2];
				}else{
					if ($result != ""){
						if ($Langue != "en"){
							$result = $result." et ".$differ.$Mon[3];
						}else{
							$result = $result." and ".$differ.$Mon[3];
						}
					}else{
						$result = $differ.$Mon[3];
					}
				}
			}
		}
	}
	return $result;
}

// fonction de convertion d'un chiffre à 3 digits en lettre
function cenvtir($Valeur,$Langue){

	$code = "";

	if ($Langue == "en"){

		//text en claire pour l'anglais
		$SUnit = "One      Two      Three    Four     Five     Six      Seven    Eight    Nine     Ten      Eleven   Twelve   Thirteen Fourteen Fifteen  Sixteen  SeventeenEighteen Nineteen ";
		$SDiz = "Twenty Thirty Forty  Fifty  Sixty  SeventyEighty Ninety ";

		if ($Valeur>99) {
			$N1= intval($Valeur/100);
			if ($N1>1){
				$code = $code.trim(substr($SUnit,($N1-1)*9,9));
			}
			$Valeur = $Valeur - ($N1*100);
			if ($code != ""){
				$code = $code." Hundreds ";
			}else{
				$code = " One Hundred ";
			}
		}
		if ($Valeur != 0){
			if ($Valeur > 19) {
				$N1 = intval($Valeur/10);
				$code = $code.trim(substr($SDiz,($N1-2)*7,7));

				$N1 = intval($Valeur/10)*10;
				$Valeur = $Valeur - $N1;
			}
			if ($Valeur > 0){
				$code = $code." ".trim(substr($SUnit,(intval($Valeur)-1)*9,9));
			}

		}
	}else{

		//text en claire pour le français
		$SUnit = "et Un   Deux    Trois   Quatres Cinq    Six     Sept    Huit    Neuf    Dix     Onze    Douze   Treize  QuatorzeQuinze  Seize   Dix-SeptDix-HuitDix-Neuf";
		$SDiz = "Vingt       Trente      Quarante    Cinquante   Soixante    Soixante    Quatre VingtQuatre Vingt";

		if ($Valeur>99) {
			$N1= intval($Valeur/100);
			if ($N1>1){
				$code = $code.trim(substr($SUnit,($N1-1)*8,8));
			}
			$Valeur = $Valeur - ($N1*100);
			if ($code != ""){
				$code = $code." Cents ";
			}else{
				$code = " Cent ";
			}
		}
		if ($Valeur != 0){
			if ($Valeur > 19) {
				$N1 = intval($Valeur/10);
				$code = $code.trim(substr($SDiz,($N1-2)*12,12));

				$N1 = intval($Valeur/10)*10;
				if (($Valeur>=70) and($Valeur<80)or($Valeur>=90)){
					$Valeur = $Valeur + 10;
				}
				$Valeur = $Valeur - $N1;
			}
			if ($Valeur > 0){
				$code = $code." ".trim(substr($SUnit,(intval($Valeur)-1)*8,8));
			}

		}
	}
	return $code;
}

?>

Conclusion :


c'est bien pour remplir les chèques

A voir également

Ajouter un commentaire Commentaires
maissa_21
Messages postés
4
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
22 juin 2005

22 juin 2005 à 13:17
ca ne marche pas
et essaye stp de penser à rendre possible de choisir la monnaie autre que celles definies dans ta classe
cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
15 avril 2005 à 13:39
Marche pas full...
Essais par toi même :
convertir('19','CAD','fr'); // Dollars
convertir('190','CAD','fr'); // Cent gt Douze Dollars
convertir('1904','CAD','fr'); // Mille Onze Cents atres Ci Dollars

Si tu dis le mille tu montes pas plus haut que 9cents..., tk y bug total ton script, ya un script qui avait lair pas mal mais le tiens marche pas...
T'essais de le corriger ?

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.