不区分大小写的 preg 在特殊 chars/Umlaute 上替换

case insensitive preg replace on special chars/Umlaute

这个有效:

echo preg_replace("/TesT/i","<b>FOUND</b>","TEST"); // works as expected prints FOUND

为什么下面这个不起作用?在我的项目中,我想突出显示搜索结果,而不管搜索输入

的 case/writing
echo preg_replace("/üöÄ/i","<b>FOUND</b>","ÜÖÄ"); // does NOT work as expected prints ÜÖÄ 

我也尝试了下面的方法,但还是不行:

mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
mb_ereg_replace("/üöÄ/i","<b>FOUND</b>","ÜÖÄ");

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

您还需要通过 u 选项以获得 utf8 支持。

这将起作用:

echo preg_replace("/üöÄ/iu","<b>FOUND</b>","ÜÖÄ");

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