2015-01-23 2 views
0

$ data에 정확한 단어 (이 경우 'gr')를 preg_match하려고합니다.특수 문자가 포함 된 문자열에 대한 preg_match_all()

$data = "he is grêt"; 
preg_match_all("/\b(gr)#?\b/i", $data, $output); 
print_r($output); 

이 다음과 같은 출력 :

Array 
(
[0] => Array 
    (
     [0] => gr 
    ) 

[1] => Array 
    (
     [0] => gr 
    ) 
) 

그것이 'grêt'와 같은 정확한 일치가 일치하지 말아야하지 'GR'나는 다음과 같은 코드가 있습니다. 나는 이것이 'ê'문자와 관련이 있다고 믿는다; 'e'로 바뀌면 코드가 의도 한대로 작동합니다.

Demo code.

+1

왜 u는'#'를 사용할 수 있습니까? 이것은'\ b (gr) \ S + \ b'에서 작동하지 않습니까? – Darka

+0

preg_match_all ("/ gr /", $ data, $ output); 나를 위해 잘 작동합니다. –

+0

@bub 정확한 단어 만 일치시키고 싶습니다. 이 경우 일치하는 항목을 찾을 필요가 없습니다. 내가 분명히하지 않으면 미안해. – JamesFrost

답변

0

이 내가 그것을 할 거라고 방법 :

$data = "he is grêt"; 
preg_match_all("/\b(gr)(?:\PL|$)/iu", $data, $output); 
print_r($output); 
+0

는'(? : \ PL | $)'을'\ b'로 대체합니다. 나는 그의 질문이 다르다고 생각한다. 그는 단지 왜 그 부분을 묻습니다. –

+0

@AvinashRaj :'(? : \ PL | $)'은'\ b'와 정말로 같지 않습니다. '\ bgr \ b'는'grêt'와 일치하지만'\ bgr \ PL'은 찾지 않습니다. – Toto

+0

아니요, 'u'수정 자로 시도하십시오. –

관련 문제