Heim >Backend-Entwicklung >PHP-Tutorial >Wie analysiere ich Währungszeichenfolgen in PHP mit mehreren Gebietsschemas?

Wie analysiere ich Währungszeichenfolgen in PHP mit mehreren Gebietsschemas?

Barbara Streisand
Barbara StreisandOriginal
2024-11-13 03:13:02939Durchsuche

How to Parse Currency Strings in PHP with Multiple Locales?

Währungszeichenfolgen in PHP analysieren

Beim Parsen von Währungszeichenfolgen in PHP kann es je nach aktuellem Gebietsschema schwierig sein, mit unterschiedlichen Dezimaltrennzeichen umzugehen . Während die Verwendung von str_replace() zum Konvertieren von Kommas in Punkte in einigen Fällen funktionieren kann, basiert sie auf der Annahme, dass das Dezimaltrennzeichen immer ein Punkt ist.

Eine robustere Lösung

Um diese Einschränkung zu beseitigen und mehrere Gebietsschemata zu bedienen, besteht eine komplexere, aber vielseitige Lösung darin, reguläre Ausdrücke (Regex) zu verwenden. So geht's:

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

Erklärung

  • preg_replace() entfernt nicht numerische Zeichen und isoliert das Dezimaltrennzeichen.
  • Die Anzahl der Trennzeichen wird ermittelt, um sie nacheinander zu entfernen, bis nur noch das Dezimaltrennzeichen übrig bleibt.
  • Die Zeichenfolge wird dann bereinigt, um Tausendertrennzeichen zu entfernen, und schließlich wird ein Gleitkommawert mit dem richtigen Dezimaltrennzeichen erstellt zurückgegeben.

Vorbehalte

  • Diese Methode schlägt fehl, wenn der Dezimalteil zwei Ziffern überschreitet.
  • Wenn es sich um solche Szenarios handelt, Erwägen Sie die Verwendung einer Bibliothek wie dem Währungsdetektor (https://github.com/mcuadros/currency-detector) für eine umfassendere Handhabung.

Das obige ist der detaillierte Inhalt vonWie analysiere ich Währungszeichenfolgen in PHP mit mehreren Gebietsschemas?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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