Kod PHP, aby usunąć wszystko oprócz liczb

135

Próbuję usunąć wszystko z ciągu, ale tylko liczby (0-9).

Myślałem, że to zadziała ...

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

Ale to echo „604-619-5135”. Czego mi brakuje???

jeffkee
źródło

Odpowiedzi:

276

Spróbuj tego:

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

preg_replace używa PCRE, które zazwyczaj zaczynają się i kończą na /.

Chris Eberle
źródło
Jednak wewnętrzne / podwójne cytowanie nie ma nic wspólnego z PCRE. Najwyraźniej (w poprzednich dniach (?flags)) ludzie, którzy zaprojektowali / napisali funkcję / API, uważali, że dobrym pomysłem jest przekazanie flag wyrażenia regularnego w /flagspostaci podwójnego cudzysłowu, zamiast używania dodatkowego parametru funkcji.
Qtax,
6
@Qtax: słuszna uwaga, tak, wiem, że stąd pochodzi słowo „grep” („g / re / p”)
Chris Eberle,
109

To jest dla przyszłych programistów, możesz też spróbować. Proste też

echo preg_replace('/\D/', '', '604-619-5135');
Navneil Naicker
źródło
41
Witam, jestem programistą z przyszłości. To rzeczywiście dobrze służyło naszym potrzebom. Dziękuję Ci.
zesda
6
Jestem z dalszej przyszłości niż Zesda i mogę potwierdzić, że to nadal pomoc
myshadowself
3
Wróciłem 2 w przyszłość i mogę potwierdzić, że nadal nie znaleźli lepszego sposobu.
Eoin
4
Jestem ostatnim deweloperem z najdalszej przyszłości. Z przykrością stwierdzam, że to już nie ma sensu. Nie powinniście używać tylu plastikowych słomek, wierzcie mi, zobaczycie, kiedy tu dotrzecie ... Jeśli wam się uda.
Jeremy
2
Do Twojej wiadomości: w 39 wieku nadal tego używamy.
user-44651
3

dużo bardziej praktyczny sposób dla tych, którzy nie chcą używać wyrażenia regularnego:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

Uwaga: działa również z numerami telefonów.

Alp Altunel
źródło