Wie kann man Geldwerte in PHP präzise analysieren: Ein ortsbezogener Ansatz?

Susan Sarandon
Freigeben: 2024-11-13 17:11:02
Original
312 Leute haben es durchsucht

How to Parse Monetary Values with Precision in PHP: A Localization-Aware Approach?

Geldwerte mit Präzision in PHP analysieren

Das Parsen von Finanzdaten mit unterschiedlichen Formaten kann eine Herausforderung sein, insbesondere wenn länderspezifische Trennzeichen berücksichtigt werden. Dieses Problem tritt auf, wenn versucht wird, eine Zeichenfolgendarstellung von Geld wie „75,25 €“ in einen Gleitkommawert umzuwandeln.

Während der übliche Ansatz die Verwendung von parsefloat() nach dem Ersetzen von Kommas durch Punkte beinhaltet, Dies ist unzureichend, wenn es um Gebietsschemata geht, die Kommas als Dezimaltrennzeichen verwenden. Um diese Einschränkung zu beheben, ist eine umfassendere Lösung erforderlich.

Eine lokalisiertisierungsbewusste Lösung

Die vorgeschlagene Lösung geht auf die Notwendigkeit einer Lokalisierungserkennung ein, indem sie sich auf reguläre Ausdrücke verlässt Extrahieren Sie den numerischen Wert aus der Eingabezeichenfolge. Es verarbeitet effektiv sowohl Kommas als auch Punkte als Dezimaltrennzeichen und behält die korrekte Darstellung unabhängig vom Gebietsschema bei.

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);
}
Nach dem Login kopieren

Testen der Lösung

Um ihre Wirksamkeit zu überprüfen, wurde die Die Lösung wurde mit verschiedenen Eingabeformaten getestet, darunter:

['1,10 USD', 1.10],
['1 000 000.00', 1000000.0],
[' 000 000.21', 1000000.21],
['£1.10', 1.10],
['3 456 789', 123456789.0],
['3,456,789.12', 123456789.12],
['3 456 789,12', 123456789.12],
['1.10', 1.1],
[',,,,.10', .1],
['1.000', 1000.0],
['1,000', 1000.0]
Nach dem Login kopieren

Die Ergebnisse zeigen die Fähigkeit der Lösung, Gleitkommawerte unabhängig vom Eingabeformat genau zu extrahieren.

Einschränkungen und Quelle

Während sich die Lösung durch die Handhabung verschiedener Gebietsschemata auszeichnet, gibt es bei Dezimalzahlen mit mehr als zwei Ziffern eine Einschränkung. Die Codebasis ist unter https://github.com/mcuadros/currency-detector verfügbar und bietet eine praktische Implementierung zum Parsen von Geldwerten an verschiedenen Orten.

Das obige ist der detaillierte Inhalt vonWie kann man Geldwerte in PHP präzise analysieren: Ein ortsbezogener Ansatz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage