eSi*_*oll 13 php regex diacritics preg-replace
无论如何要制作一个忽略重音的正则表达式?
例如:
preg_replace("/$word/i", "<b>$word</b>", $str);
Run Code Online (Sandbox Code Playgroud)
正则表达式中的"i"是忽略区分大小写,但无论如何要匹配,例如
java与Jávã?
我确实尝试制作$ str的副本,将内容更改为无重音字符串并找到所有出现的索引.但是2个字符串的索引似乎是不同的,即使它只是没有重音符号.
(我做了一项研究,但我所能找到的是如何从字符串中删除重音)
小智 7
我不认为,有这样的方式.这将是与语言环境相关的,你可能首先想要一个"/ u"开关来启用模式字符串中的UTF-8.
我可能会做这样的事情.
function prepare($pattern)
{
$replacements = Array("a" => "[áàäâ]",
"e" => "[éèëê]" ...);
return str_replace(array_keys($replacements), $replacements, $pattern);
}
pcre_replace("/(" . prepare($word) . ")/ui", "<b>\\1</b>", $str);
Run Code Online (Sandbox Code Playgroud)
在你的情况下,索引是不同的,因为除非你使用mb_string你可能正在处理UTF-8,每个字符使用多个字节.