PHP-Code, um alles außer Zahlen zu entfernen

135

Ich versuche, alles aus einer Zeichenfolge zu entfernen, aber nur Zahlen (0-9).

Ich dachte das würde funktionieren ..

echo preg_replace("[^0-9]","",'604-619-5135');

Aber es gibt "604-619-5135" wieder. Was vermisse ich???

jeffkee
quelle

Antworten:

275

Versuche dies:

preg_replace('/[^0-9]/', '', '604-619-5135');

preg_replace verwendet PCREs, die im Allgemeinen mit a beginnen und enden /.

Chris Eberle
quelle
Das innere / doppelte Zitat hat nichts mit PCRE tho zu tun. Anscheinend (in den Tagen zuvor (?flags)) hielten es die Leute, die die Funktion / API entworfen / geschrieben haben, für eine gute Idee, die Regex-Flags mit der doppelten Anführungszeichen /flagszu übergeben, anstatt einen zusätzlichen Funktionsparameter zu verwenden.
Qtax
6
@ Qtax: guter Punkt, ja, ich weiß, dort bekommen wir das Wort "grep" von ("g / re / p")
Chris Eberle
109

Dies ist für zukünftige Entwickler, Sie können dies auch versuchen. Einfach auch

echo preg_replace('/\D/', '', '604-619-5135');
Navneil Naicker
quelle
41
Hallo, ich bin ein Entwickler aus der Zukunft. Dies hat in der Tat unseren Bedürfnissen gut gedient. Danke dir.
Zesda
6
Ich bin von weiter in der Zukunft als Zesda und kann bestätigen, es ist immer noch eine Hilfe
myshadowself
3
Ich bin in der Zukunft zurückgekommen und kann bestätigen, dass sie immer noch keinen besseren Weg gefunden haben.
Eoin
4
Ich bin der allerletzte Entwickler aus der fernsten Zukunft. Ich bin traurig zu sagen, dass dies nicht mehr von Nutzen ist. Ihr hättet nicht so viele Plastikstrohhalme verwenden sollen, vertrau mir, du wirst sehen, wenn du hier bist ... Wenn du es schaffst.
Jeremy
2
Nur zu Ihrer Information: Wir im 39. Jahrhundert verwenden dies immer noch.
user-44651
3

Ein viel praktischerer Weg für diejenigen, die Regex nicht verwenden möchten:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

Hinweis: Es funktioniert auch mit Telefonnummern.

Alp Altunel
quelle