【发布时间】:2018-08-20 13:29:36
【问题描述】:
我需要在 UTF-8 $text 中突出显示与 $key 匹配的单个单词或短语(整个单词,而不是子字符串)。这种匹配必须既不区分大小写又不区分变音符号。突出显示的文本必须保持原样(包括大写/小写字符和变音符号,如果存在)。
以下表达式实现了一半的目标:
$text = preg_replace( "/\b($key)\b/i", '<div class="highlight">$1</div>', $text );
它不区分大小写并匹配整个单词,但不会突出显示与 $key 匹配的 $text 部分,如果这些部分包含 $key 中不存在的变音符号。 例如。我想通过 $key = "bjorn kallstrom" 在 $text 中突出显示“Björn Källström”。
欢迎任何绝妙的想法(使用 preg_replace 或其他 PHP 函数)。
【问题讨论】:
-
带有类的字体标签,有点蒸汽朋克。
-
@Casimir et Hippolyte:好的,我用“div”替换了“font”标签;-)
-
@Jason Grim:不,我不认为这是重复的:您链接的问题根本不考虑变音符号。
标签: php regex preg-replace