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???

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 /.


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.