2012-12-14 1 views
4

저는 검열을하고 있습니다. 나는이 텍스트를 가지고 :Regexp and accent

나는 그것이 아닌 다른 일에, 전체 단어의 경우 "사기"를 대체 할
$str = "Je connais ce con de conémi". 

.

나는이 할 경우

preg_replace("/\b(con)\b/i", "###", $str); 

결과는 다음과 같습니다

"Je connais ce ### de ###émi". 

Conémi은 검열되었습니다. conémi의 "é"때문입니다.

preg_replace("/(?<=\p{Z}|\p{P}|^)con(?=\p{Z}|\p{P}|$)/i", "###", $str); 

http://ideone.com/cCoiNp

+2

당신이 사용하는 언어에 태그를하시기 바랍니다 : – halfelf

+0

@halfelf가 당신에게 팁을 준'preg_replace'입니까? Lol – bobthyasian

+0

이것은 PHP에 문제가있는 것 같습니다. JavaScript와 Python은 둘 다''Je connais ce ### de conémi "'를 반환합니다. – Blender

답변

1

그냥

preg_replace("/\b(con)\b/iu", "###", $str) 
          ^--- here it is 

또는 대체 솔루션은 PCRE 유니 코드 문자를 사용하는 것입니다 u 정규식 수정을 추가합니다. PHP 같아요?

+0

좋습니다. PCRE 유니 코드 문자와 함께 작동합니다. 고맙습니다. 참고 : "u"수정자는 문제를 수정하지 않습니다. –

+0

@Pax Maximinus : 여기에서 수정 됨, PHP 5.3.17 – zerkms

+0

감사합니다. –