Ich möchte String mit einem Preis in einen Gleitkommawert umwandeln. Der Preis kommt aus verschiedenen Sprachen und Ländern und kann so aussehen:
%Vor%oder was immer du dir vorstellen kannst ...
Ich bin mir nicht sicher, ob ich die ganzen Möglichkeiten mit meinen Beispielen bekommen habe. Ich bin mir auch nicht sicher, ob es möglich ist, blind international zu konvertieren, vielleicht muss ich einen Sprachcode verwenden? Für den Anfang wären Euro und Dollar genug.
floatval()
ist irgendwie dumm, also brauche ich hier etwas mehr. Ich denke, ich sollte zuerst alle Zeichen neben den Zahlen entfernen, ,
und .
. Dann fixiere ,
/ .
und benutze floatval schließlich.
Hat jemand das schon mal gemacht und kann mir ein bisschen helfen?
Ich würde eine Lösung ohne regexp bevorzugen;)
Ok, ich habe es selbst ausprobiert. Was denkst du darüber?
%Vor%Hier einige Tests: Ссылка
Entschuldigung. Ich konnte die anderen Funktionen nicht einschließen, weil Codepad sie nicht mochte. Aber ich habe sie verglichen und es gab Probleme mit Strings wie "22 000,76" oder "22,000"
Update: Als Limitless isa wies darauf hin, dass Sie die Build-in-Funktion money-format .
Wenn Sie alle nicht numerischen Zeichen entfernen, erhalten Sie den Preis in Cent. Sie können das dann durch 100 teilen, um den "lesbaren" Preis zu erhalten. Sie könnten dies mit etwas wie der filter_var FILTER_SANITIZE_NUMBER_INT machen. Zum Beispiel:
%Vor%Oben ist nicht getestet, aber so etwas ist wahrscheinlich das, wonach Sie suchen.
Um alle außer Ziffern, Kommata und Punkte zu löschen:
%Vor%Ausgabe:
%Vor%Nun können wir die Funktion parseFloat von Michiel - php.net nutzen (ich habe gewonnen) fügen Sie es hier nicht ein, da es eine ziemlich große Funktion ist):
%Vor%Ausgabe wird sein:
%Vor%Tags und Links php