正则表达式也匹配重音字符

Fel*_*ard 5 php regex character non-ascii-characters accent-insensitive

我有以下 PHP 代码:

\n\n
$search = "foo bar que";\n$search_string = str_replace(" ", "|", $search);\n\n$text = "This is my foo text with qu\xc3\xa9 and other accented characters.";\n$text = preg_replace("/$search_string/i", "<b>$0</b>", $text);\n\necho $text;\n
Run Code Online (Sandbox Code Playgroud)\n\n

显然,“que”与“qu\xc3\xa9”不匹配。我怎样才能改变这一点?有没有办法让preg_replace忽略所有口音?

\n\n

必须匹配的字符(西班牙语):

\n\n
\xc3\xa1,\xc3\x81,\xc3\xa9,\xc3\x89,\xc3\xad,\xc3\x8d,\xc3\xb3,\xc3\x93,\xc3\xba,\xc3\x9a,\xc3\xb1,\xc3\x91\n
Run Code Online (Sandbox Code Playgroud)\n\n

我不想在应用正则表达式之前替换所有重音字符,因为文本中的字符应该保持不变:

\n\n

“这是我的foo文本,带有qu\xc3\xa9和其他重音字符。”

\n\n

并不是

\n\n

“这是我的foo文本,带有que和其他重音字符。”

\n

Lui*_*uot 1

$search = str_replace(\n   ['a','e','i','o','u','\xc3\xb1'],\n   ['[a\xc3\xa1]','[e\xc3\xa9]','[i\xc3\xad]','[o\xc3\xb3]','[u\xc3\xba]','[n\xc3\xb1]'],\n   $search)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这和大写字母相同会抱怨您的请求。旁注:\xc3\xb1 replacemet 对我来说听起来无效,因为 'ni\xc3\xb1o' 与 'nino' 完全不同

\n