不区分大小写的 preg 替换特殊字符/Umlaute

Tom*_*ner 2 php preg-replace case-insensitive match

这有效:

\n\n
echo preg_replace("/TesT/i","<b>FOUND</b>","TEST"); // works as expected prints FOUND\n
Run Code Online (Sandbox Code Playgroud)\n\n

为什么下面这个不起作用?在我的项目中,我想突出显示搜索结果,无论搜索输入的大小写/书写如何

\n\n
echo preg_replace("/\xc3\xbc\xc3\xb6\xc3\x84/i","<b>FOUND</b>","\xc3\x9c\xc3\x96\xc3\x84"); // does NOT work as expected prints \xc3\x9c\xc3\x96\xc3\x84 \n
Run Code Online (Sandbox Code Playgroud)\n\n

我也尝试了以下方法,但也不起作用:

\n\n
mb_internal_encoding("UTF-8");\nmb_regex_encoding("UTF-8");\nmb_ereg_replace("/\xc3\xbc\xc3\xb6\xc3\x84/i","<b>FOUND</b>","\xc3\x9c\xc3\x96\xc3\x84");\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:
\n据我所知,我确保页面上的所有内容、脚本、连接都是 UTF-8

\n

hek*_*mgl 5

您还需要传递支持u选项utf8

\n\n

这将起作用:

\n\n
echo preg_replace("/\xc3\xbc\xc3\xb6\xc3\x84/iu","<b>FOUND</b>","\xc3\x9c\xc3\x96\xc3\x84");\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以在此处找到可用选项的列表:http://php.net/manual/en/reference.pcre.pattern.modifiers.php

\n