Maison > développement back-end > tutoriel php > Comment analyser des chaînes de devises en PHP avec plusieurs paramètres régionaux ?

Comment analyser des chaînes de devises en PHP avec plusieurs paramètres régionaux ?

Barbara Streisand
Libérer: 2024-11-13 03:13:02
original
946 Les gens l'ont consulté

How to Parse Currency Strings in PHP with Multiple Locales?

Analyse des chaînes de devises en PHP

Lors de l'analyse des chaînes de devises en PHP, il peut être difficile de gérer différents séparateurs décimaux en fonction des paramètres régionaux actuels. . Bien que l'utilisation de str_replace() pour convertir des virgules en points puisse fonctionner dans certains cas, elle repose sur l'hypothèse que le séparateur décimal est toujours un point.

Une solution plus robuste

Pour remédier à cette limitation et répondre à plusieurs paramètres régionaux, une solution plus complexe mais polyvalente consiste à utiliser des expressions régulières (regex). Voici comment procéder :

public function getAmount($money)
{
    $cleanString = preg_replace('/([^0-9\.,])/i', '', $money);
    $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money);

    $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1;

    $stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased);
    $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '',  $stringWithCommaOrDot);

    return (float) str_replace(',', '.', $removedThousandSeparator);
}
Copier après la connexion

Explication

  • preg_replace() supprime les caractères non numériques et isole le séparateur décimal.
  • Le nombre de séparateurs est déterminé pour les supprimer un à la fois jusqu'à ce que seul le séparateur décimal reste.
  • La chaîne est ensuite nettoyée pour supprimer des milliers de séparateurs, et enfin, une valeur flottante avec le séparateur décimal correct est renvoyée.

Mises en garde

  • Cette méthode échoue si la partie décimale dépasse deux chiffres.
  • Si vous traitez avec de tels scénarios, envisagez d'utiliser une bibliothèque comme money-detector (https://github.com/mcuadros/currency-detector) pour une gestion plus complète.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal