Kode PHP untuk menghapus semuanya kecuali angka

135

Saya mencoba untuk menghapus semuanya dari string tetapi hanya angka (0-9).

Saya pikir ini akan berhasil ..

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

Tapi itu bergema "604-619-5135". Apa yang saya lewatkan ???

jeffkee
sumber

Jawaban:

276

Coba ini:

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

preg_replace menggunakan PCRE yang umumnya dimulai dan diakhiri dengan a /.

Chris Eberle
sumber
Kutipan batin / ganda tidak ada hubungannya dengan PCRE tho. Rupanya (pada hari-hari sebelumnya (?flags)) orang-orang yang mendesain / menulis fungsi / API berpikir itu adalah ide yang baik untuk melewati bendera regex dengan /flagsformulir yang dikutip ganda daripada menggunakan parameter fungsi tambahan.
Qtax
6
@ Lexax: poin bagus, ya saya tahu di situlah kita mendapatkan kata "grep" dari ("g / re / p")
Chris Eberle
109

Ini untuk pengembang masa depan, Anda juga dapat mencoba ini. Sederhana juga

echo preg_replace('/\D/', '', '604-619-5135');
Navneil Naicker
sumber
41
Halo, saya adalah pengembang dari masa depan. Ini memang telah melayani kebutuhan kita dengan baik. Terima kasih.
zesda
6
Saya dari lebih jauh di masa depan daripada Zesda dan dapat mengkonfirmasi, itu masih membantu
myshadowself
3
Saya telah kembali 2 masa depan dan saya dapat mengkonfirmasi mereka masih belum menemukan cara yang lebih baik.
Eoin
4
Saya adalah pengembang terakhir dari masa depan terjauh. Saya sedih mengatakan bahwa ini tidak lagi berguna. Kalian seharusnya tidak menggunakan begitu banyak sedotan plastik, percayalah, kamu akan lihat ketika kamu sampai di sini .... Jika kamu berhasil.
Jeremy
2
Hanya FYI: kita di Abad ke-39 masih menggunakan ini.
user-44651
3

cara yang jauh lebih praktis bagi mereka yang tidak ingin menggunakan regex:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

Catatan: ini berfungsi dengan nomor telepon juga.

Alp Altunel
sumber