Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Regexp和重音_Php_Regex - Fatal编程技术网

Php Regexp和重音

Php Regexp和重音,php,regex,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已被审查。 这是因为conémi的“é”。只需添加uregex修饰符即可 preg_replace("/\b(con)\b/iu", "##

我在做文字审查。 我有以下案文:

$str = "Je connais ce con de conémi".
如果“con”是一个完整的词,我想替换它,而不是另一个词

如果我这样做:

preg_replace("/\b(con)\b/i", "###", $str);
结果是:

"Je connais ce ### de ###émi".
Conémi已被审查。
这是因为conémi的“é”。

只需添加
u
regex修饰符即可

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);

preg\u replace(“/”(?请标记您使用的语言。我猜是PHP?@halfelf是
preg\u replace
给您通风报信的吗?这似乎是PHP的问题。JavaScript和Python都返回
“Je connais ce####de conémi”“
。哦,是的,很抱歉没有PHP标志。好的。它与PCRE unicode字符一起工作。谢谢。注意:“u”修饰符不能解决问题。@Pax Maximinus:它在这里解决了问题,PHP 5.3.17谢谢您的精确性。