Analyse de valeurs monétaires non formatées en PHP
Lorsque vous tentez d'analyser des valeurs monétaires représentées sous forme de chaînes, telles que "75,25 €", en leurs équivalents numériques, le recours à la seule méthode parsefloat() peut ne pas toujours suffire. Pour remédier à cette limitation et garantir la flexibilité entre les différents paramètres régionaux et formats de séparateur, une solution plus complexe est nécessaire.
Cette solution exploite les expressions régulières pour extraire des valeurs numériques en tenant compte de divers séparateurs et formats possibles utilisés dans les montants monétaires. Étant donné une chaîne d'entrée, les caractères inutiles sont d'abord supprimés à l'aide de preg_replace(). Les opérations regex ultérieures identifient et suppriment les séparateurs et les milliers de séparateurs, ce qui donne une chaîne numérique.
Enfin, la chaîne nettoyée est soumise à une opération str_replace() standard pour unifier le séparateur décimal sous forme de point avant de la convertir en flottant. en utilisant (flotteur). Cette approche globale gère à la fois le point et la virgule comme séparateurs décimaux, garantissant une analyse précise quels que soient les paramètres régionaux.
Voici un exemple pour illustrer le processus :
<?php 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); }
Avec cette approche, vous pouvez en toute confiance analyser les chaînes monétaires non formatées, obtenant des valeurs numériques fiables quelles que soient la langue et les conventions de formatage.
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!