2012-03-13 5 views
8

문자열을 테스트하여 특정 단어가 있는지 확인하고 싶습니다.preg_match 여러 단어

은 즉 :

$string = "The rain in spain is certain as the dry on the plain is over and it is not clear"; 
preg_match('`\brain\b`',$string); 

하지만 그 방법은 단 하나 개의 단어를 일치합니다. 여러 단어를 확인하려면 어떻게합니까? 같은

+3

으로, preg_match_all() –

+0

편집 질문 – Autolycus

답변

15

뭔가 :

preg_match_all('#\b(rain|dry|clear)\b#', $string, $matches); 
+0

를 참조하십시오 반환하지 않습니다하십시오 무엇 #의 \ s이 (가) – Autolycus

+0

@Autolycus 내가 공백'\ s'를 추가 거라고 않습니다 않습니다 단어 주위에, 그러나 나는 당신이 이미 단어 경계'\ b'를 사용했다는 것을 알아 차렸다. – jeroen

+0

@Autolycus 처음과 끝 부분의'# '은 정규 표현식의 시작과 끝을 표시하며 대문자와 무관 한 일치를 위해'# i'와 같이 끝에 스위치를 추가 할 수 있도록 필요합니다 (그 또는 다른 문자). – jeroen

2
preg_match('\brain\b',$string, $matches); 
var_dump($matches); 
+0

누락 구분 기호를보고, 하나 개 이상의 값 –

+0

이 편집 된 질문 – Autolycus

3
preg_match('~\b(rain|dry|certain|clear)\b~i',$string); 

당신이 "나"에서 정규식으로 파이프 문자 (|)를 사용할 수 있습니다.

단어가 있는지 알아야 할 경우 위와 같이 preg_match을 사용하십시오. 당신은 단어의 모든 발행 수와 일치해야하는 경우, preg_match_all를 사용

preg_match_all('~\b(rain|dry|certain|clear)\b~i', $string, $matches); 

그런 다음 $matches 변수를 확인하십시오.

2

http://php.net/manual/en/function.preg-match.php

"preg_match()를 하나 개의 문자열이 다른 문자열에 포함되어 있는지 확인하려면 사용하지 마십시오. strpos() 또는 대신 않는 strstr()를 사용하여 그들이 더 빨리 될 것 같은."