Maison  >  Article  >  développement back-end  >  Comment analyser des valeurs monétaires non formatées en PHP ?

Comment analyser des valeurs monétaires non formatées en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-12 22:27:01365parcourir

How to Parse Unformatted Monetary Values in PHP?

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!

Déclaration:
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