Déformatage précis des valeurs monétaires dans divers paramètres régionaux
La gestion des valeurs monétaires nécessite souvent la conversion de chaînes représentant des montants monétaires en quantités numériques. En PHP, la fonction parsefloat() peut être utilisée pour y parvenir. Cependant, lorsqu'il s'agit de valeurs qui peuvent varier en fonction des paramètres régionaux, le séparateur décimal peut différer. Cela pose un défi pour l'approche simple parsefloat(str_replace(',', '.', $var)).
Une solution complète
Pour répondre à ces paramètres régionaux -problème dépendant, considérons la solution suivante, qui extrait efficacement la valeur flottante tout en tenant compte des différents séparateurs décimaux et des milliers séparateurs :
public function getAmount($money) { $cleanString = preg_replace('/([^0-9\.,])/i', '', $money); // Remove non-numeric characters $onlyNumbersString = preg_replace('/([^0-9])/i', '', $money); // Extract only numbers $separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1; // Determine extra separators $stringWithCommaOrDot = preg_replace('/([,\.])/i', '', $cleanString, $separatorsCountToBeErased); // Replace separators $removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/i', '', $stringWithCommaOrDot); // Remove excess thousand separators return (float) str_replace(',', '.', $removedThousandSeparator); // Convert to float with dot as decimal separator }
Avantages et mises en garde
Cette solution fournit un moyen fiable d'extraire les valeurs flottantes des chaînes monétaires dans divers paramètres régionaux. Des tests approfondis ont validé sa précision pour un large éventail de scénarios, y compris des valeurs avec des virgules ou des points comme séparateurs décimaux et des séparateurs de milliers.
Cependant, la mise en garde réside dans son échec potentiel lorsqu'il s'agit de parties décimales dépassant deux chiffres. Pour remédier à cette limitation, modifiez le modèle d'expression régulière dans le code en conséquence.
Mise en œuvre pratique
La solution est déployée au sein de la bibliothèque sur https://github.com /mcuadros/currency-detector, spécialisé dans l'identification et le traitement des valeurs monétaires en fonction de paramètres spécifiques aux paramètres régionaux.
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!