Preiszeichenfolge zum Floaten

8

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

    
PiTheNumber 02.02.2012, 10:15
quelle

6 Antworten

12

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 .

    
PiTheNumber 02.02.2012, 11:25
quelle
2

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.

    
Oldskool 02.02.2012 10:22
quelle
2

Diese Funktion wird Ihr Problem beheben:

%Vor%     
user1988125 02.02.2012 10:51
quelle
2

Preis zu Nummer Zahl zu Preisbeispielen

%Vor%     
Limitless isa 27.10.2015 09:09
quelle
1

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%     
Nick 02.02.2012 10:55
quelle
0

nicht perfekt, aber es funktioniert

%Vor%

Arbeitsfälle

%Vor%

zurück

%Vor%     
York 05.01.2017 13:53
quelle

Tags und Links