Wenn ich folgende Werte habe:
$var1 = AR3,373.31
$var2 = 12.322,11T
Wie kann ich eine neue Variable erstellen und sie auf eine Kopie der Daten setzen, bei der nicht numerische Zeichen mit Ausnahme von Kommas und Punkten entfernt wurden? Die obigen Werte würden die folgenden Ergebnisse zurückgeben:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
Ich bin überrascht, dass filter_var hier nicht erwähnt wurde, da dies eine so alte Frage ist ...
PHP verfügt über eine integrierte Methode zur Verwendung von Desinfektionsfiltern . Insbesondere wird in dieser Situation
FILTER_SANITIZE_NUMBER_FLOAT
dieFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND
Flags verwendet. Wie so:Es könnte auch erwähnenswert sein, dass es, da es in PHP integriert ist, etwas schneller ist als die Verwendung von Regex mit den aktuellen PHP-Bibliotheken (wenn auch buchstäblich in Nanosekunden).
quelle
Der einfachste Weg, um wirklich alle nicht numerischen Zeichen zu entfernen:
\D
steht für "jedes Zeichen, das keine Dezimalstelle ist"http://php.net/manual/en/regexp.reference.escape.php
quelle
Sie können
filter_var
alle unzulässigen Zeichen außer Ziffern, Punkten und Kommas entfernen.FILTER_SANITIZE_NUMBER_FLOAT
Filter wird verwendet, um alle nicht numerischen Zeichen aus der Zeichenfolge zu entfernen.FILTER_FLAG_ALLOW_FRACTION
erlaubt Fraktionstrenner" . "
FILTER_FLAG_ALLOW_THOUSAND
, Komma aus der Zeichenfolge zu erhalten.Code
Ausgabe
Weitere Informationen zu filter_var () und Sanitize-Filtern
quelle
Wenn die Anforderung darin besteht, alle (und nicht nur ein) nicht numerischen Zeichen zu entfernen, kann das vorherige möglicherweise auf sehr einfache Weise so geschrieben werden (Sie können jedoch eine Funktion schreiben, um die Zeichenfolge zu übergeben und den erforderlichen Wert ohne Zeichen zurückzugeben .. wie auch immer..):
quelle
Wenn Buchstaben immer am Anfang oder am Ende stehen, können Sie einfach nur Trimmen verwenden ... kein regulärer Ausdruck erforderlich
quelle
Gleiche Antwort wie Middaparka, aber entfernen Sie die
,.
quelle