[PHP] Deutsches Zahlenformat konvertieren mit Punkt als Dezimaltrenner

Hallo,

du kennst das wahrscheinlich. Man hat auf seiner Webseite ein Eingabefeld für eine Zahl, die Kommastellen beinhalten kann. Ein Geldbetrag zum Beispiel. Wir geben da dann natürlich etwas in der Art ein: 54,23
So sieht eine Zahl bei uns aus. Aber nicht überall auf der Welt. Die meisten sogar schreiben eine Zahl mit Dezimalstellen so: 54.23. Also mit einem Punkt als Dezimaltrenner. “Leider” wollen auch Computer und Datenbanken die Zahl mit Punkt als Dezimaltrenner. Und damit geht das Problem los. Man muss also alle Eingaben prüfen und ggf umwandeln.

In meiner ganzen Zeit als Programmierer ist mir das schon oft vor die Füße gefallen. Und heute habe ich eine einfach wie auch geniale Lösung gefunden. Die folgende Zeile nimmt jede Form einer Zahl und wandelt sie in eine Zahl mit Punkt als Dezimaltrenner um. Soweit ich das getestet habe, funktioniert sie absolut sauber.

$val = floatval(preg_replace('/\.(?=.*\.)/', '', str_replace(",",".",$val)));

Was passiert da?

Als erstes wird jedes Komma durch einen Punkt ersetzt. Danach werden alle Punkte, bis auf den letzten entfernt und dann das Ergebnis noch in ein Float umgewandelt und damit auch gleich validiert.

Damit sollte sich das Thema hoffentlich erledigt haben :-)