Position actuelle: Accueil> Derniers articles> Comment formater les valeurs de devise avec des points décimaux avec Money_Format? Guide pratique

Comment formater les valeurs de devise avec des points décimaux avec Money_Format? Guide pratique

M66 2025-06-22

1. Qu'est-ce que Money_format?

Money_Format () est une fonction qui utilise les paramètres régionaux actuels (réglage de la région) pour formater les nombres comme chaînes de devises. Sa syntaxe est la suivante:

 string money_format ( string $format , float $number )

dans:

  • $ format est une chaîne de contrôle de format, similaire au format utilisé dans sprintf () ;

  • Le nombre $ est le numéro (montant) que vous souhaitez formater.


2. Réglez les paramètres régionaux corrects (localisation)

Pour que Money_Format () fonctionne correctement, vous devez d'abord configurer un environnement de localisation. Vous pouvez utiliser la fonction setLocale () à définir. Par exemple, réglé sur un format localisé pour la région des États-Unis:

 setlocale(LC_MONETARY, 'en_US.UTF-8');

Notez que différents systèmes (en particulier Windows et Linux) prennent en charge les paramètres régionaux différemment, vous devrez peut-être installer le pack de langues correspondant.


3. Format la monnaie avec des points décimaux

Voici un exemple complet de montants de formatage:

 setlocale(LC_MONETARY, 'en_US.UTF-8');

$amount = 1234.56;
echo money_format('%.2n', $amount);

La sortie peut être:

 $1,234.56

dans:

  • «% .2n» signifie que le format de devise de deux chiffres est conservé après avoir utilisé le point décimal;

  • n est le type de format de devise défini par les paramètres régionaux;

  • .2 Spécifie le nombre de chiffres après le point décimal.


4. Prise en charge de l'affichage de la monnaie multilingue

Si vous souhaitez afficher dynamiquement la quantité de formats différents en fonction du langage utilisateur, vous pouvez le définir dynamiquement en combinaison avec setLocale () :

 $amount = 9876.54;

setlocale(LC_MONETARY, 'de_DE.UTF-8');
echo "Format allemand: " . money_format('%.2n', $amount) . "\n";

setlocale(LC_MONETARY, 'fr_FR.UTF-8');
echo "Format français: " . money_format('%.2n', $amount) . "\n";

Sortir:

 Format allemand: 9.876,54 €
Format français: 9 876,54 €

Ceci est très pratique pour les sites Web internationaux (tels que https://m66.net/ecommerce/intl-support).


V. Solution alternative (applicable à PHP 8.0 et plus)

Comme mentionné précédemment, Money_Format () a été supprimé dans PHP 8. Si vous utilisez la nouvelle version de PHP, il est recommandé d'utiliser NumberFormatter (à partir de l'extension INTL ) à la place:

 $amount = 5678.90;

$fmt = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
echo $fmt->formatCurrency($amount, 'USD');

Sortir:

 $5,678.90

L'utilisation de NumberFormatter est non seulement compatible avec les nouvelles versions, mais offre également un support international plus fort et convient aux environnements de production.