Heim > Artikel > Backend-Entwicklung > Wie kann man monetäre Werte aus Zeichenfolgen an verschiedenen Orten genau analysieren?
Genaue Formatierung von Geldwerten an verschiedenen Orten
Der Umgang mit Geldwerten erfordert oft die Konvertierung von Zeichenfolgen, die Geldbeträge darstellen, in numerische Mengen. In PHP kann dazu die Funktion parsefloat() genutzt werden. Wenn es jedoch um Werte geht, die je nach Gebietsschema variieren können, kann das Dezimaltrennzeichen unterschiedlich sein. Dies stellt eine Herausforderung für den unkomplizierten parsefloat(str_replace(',', '.', $var))-Ansatz dar.
Eine umfassende Lösung
Zur Adressierung dieses Gebietsschemas -abhängigen Problems, ziehen Sie die folgende Lösung in Betracht, die den Gleitkommawert effektiv extrahiert und gleichzeitig verschiedene Dezimaltrennzeichen und Tausendertrennzeichen berücksichtigt:
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 }
Vorteile und Einschränkungen
Dies Die Lösung bietet eine zuverlässige Möglichkeit, Float-Werte aus Geldzeichenfolgen an verschiedenen Orten zu extrahieren. Umfangreiche Tests haben seine Genauigkeit für eine Vielzahl von Szenarien bestätigt, einschließlich Werten mit Kommas oder Punkten als Dezimaltrennzeichen und Tausendertrennzeichen.
Die Einschränkung besteht jedoch darin, dass es bei der Verarbeitung von Dezimalteilen, die mehr als zwei Ziffern umfassen, möglicherweise versagen kann. Um diese Einschränkung zu beheben, ändern Sie das reguläre Ausdrucksmuster im Code entsprechend.
Praktische Implementierung
Die Lösung wird in der Bibliothek unter https://github.com bereitgestellt /mcuadros/currency-detector, das auf die Identifizierung und Verarbeitung von Geldwerten basierend auf gebietsschemaspezifischen Einstellungen spezialisiert ist.
Das obige ist der detaillierte Inhalt vonWie kann man monetäre Werte aus Zeichenfolgen an verschiedenen Orten genau analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!