숫자를 제외한 모든 것을 제거하는 PHP 코드


135

문자열에서 모든 것을 제거하려고하지만 숫자 (0-9)입니다.

나는 이것이 효과가 있다고 생각했다.

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

그러나 이것은 "604-619-5135"를 반영합니다. 내가 뭘 놓친거야 ???

답변:


276

이 시도:

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

preg_replace는 일반적으로로 시작하고 끝나는 PCRE를 사용합니다 /.


내부 / 큰 따옴표는 PCRE와 관련이 없습니다. 분명히 (전날 (?flags)) 함수 / API를 디자인 / 작성한 사람들 /flags은 여분의 함수 매개 변수를 사용하는 대신 큰 따옴표 로 묶은 형식으로 정규식 플래그를 전달하는 것이 좋습니다 .
Qtax

6
@Qtax : 좋은 지적, 그래, 나는 그것이 우리가 "grep"이라는 단어를 어디에서 얻었는지 알고있다. ( "g / re / p")
Chris Eberle

109

이것은 미래의 개발자를위한 것이며, 시도해 볼 수도 있습니다. 너무 간단

echo preg_replace('/\D/', '', '604-619-5135');

41
안녕하세요, 저는 미래의 개발자입니다. 이것은 실제로 우리의 요구를 잘 충족시켜 왔습니다. 감사합니다.
zesda

6
내가 Zesda 수의 확인보다 미래에 더에서 오전, 그것은 여전히 도움이됩니다
myshadowself는

3
나는 미래 2로 돌아 왔고 그들이 더 좋은 방법을 찾지 못했다는 것을 확인할 수 있습니다.
Eoin

4
나는 가장 먼 미래의 마지막 개발자입니다. 나는 이것이 더 이상 사용되지 않는다고 말해서 슬프다. 너희들은 너무 많은 플라스틱 빨대를 사용해서는 안된다. 여기에 도착하면 보게 될 것을 믿어 라.
Jeremy

2
참고로 39 세기에 우리는 여전히 이것을 사용합니다.
사용자 -44651


3

정규식을 사용하지 않으려는 사람들에게 훨씬 실용적인 방법입니다.

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

참고 : 전화 번호에서도 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.