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); }
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]
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!