2011-01-09 2 views
6

정규 표현식이 싫고 누군가가 regualar 표현식을 사용하여 preg_replace와 함께 사용할 수 있기를 바랍니다.preg_replace - 문자열에서 원하지 않는 문자를 제거하여 숫자 값을 반환합니다.

문자열에서 원치 않는 문자를 제거하여 preg_replace를 사용하여 숫자 값만 반환하려고합니다.

일부 텍스트가 £ 100

£ 100 텍스트

텍스트 100 텍스트

많은 감사

+1

이렇게 모두 100을 산출합니까? '1abc00'는 어떻게됩니까? – BoltClock

+1

더 나은 점은'£ 1.00'은 어떨까요? – Kobi

답변

16
$NumericVal = preg_replace("/[^0-9]/","",$TextVariable); 

^를 +

+1

매우 효율적이고 탁월한 대답 –

+0

호기심 때문에'\ D'를 사용하지 않는 이유는 무엇입니까? 웹에서의 많은 답변은 기본 제공되는 "숫자가 아닌" – nicorellius

+0

@nicorellius가 아닌 숫자가 아닌 숫자를 사용합니다. 나는 이렇게 대답했을 때 이것을 정말 빨리 썼습니다. 사용법을 생각하지 않았고 이후로 생각하지 않았습니다. \ d를 사용하도록 편집하십시오. 그것은 다른 정규식 옵션에 대한 지식이 없어도 사람들에게 더 읽기 쉽습니다. –

0
preg_replace('/[^0-9]/','',$text); 
+0

이것은 Boltclock의 예제에도'100'을줍니다. – AndreKR

+0

당신은 +가 필요합니다. 그렇지 않으면 첫 번째 비 번호 –

+1

No 만 대체합니다. 이것은'preg_match'에 부분적으로 해당되지만'preg_replace'에 대해서는 사실이 아닙니다. 어떤 보통의 대체처럼'preg_replace'는'[^ 0-9]'문자의 각 발생을 무효로 바꾸고 다음 문자로 검색을 계속합니다. – AndreKR

0

을 다음과 같이

문자열 형식이 될 수있다 사용해보기 :

preg_replace("/\D+/", "", "SOME TEXT £100") 

또한 첫 번째 번호를 얻기 위해 preg_match를 사용할 수 있습니다

preg_match("/\d+/", "SOME TEXT £100", $matches); 
$number = $matches[0]; 
(가) [] 불필요한 제거 다음

편집 제외하고는 아무것도 의미 내부

8
$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l); 

작동 마녀 UTF-8, A-Z a-z 0-9 łwóc ... 등 허용

관련 문제