正则表达和重音

时间:2012-12-14 08:22:49

标签: php regex

我正在研究一个单词检查员。 我有这样的文字:

$str = "Je connais ce con de conémi".

我想替换“con”,如果它是一个完整的单词,而不是另一个单词。

如果我这样做:

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

结果是:

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

康美米受到审查。 这是因为conémi的“é”。

1 个答案:

答案 0 :(得分:1)

只需添加u正则表达式修饰符

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

或替代解决方案是使用PCRE unicode字符:

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

http://ideone.com/cCoiNp