突出显示搜索中的多个关键字

我正在使用此代码突出显示搜索关键字

function highlightWords($string, $word)

{

$string = str_replace($word, "<span class='highlight'>".$word."</span>", $string);

/*** return the highlighted string ***/

return $string;

}

....

$cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search_result);

但是,这仅突出显示一个关键字。如果用户输入多个关键字,则会缩小搜索范围,但不会突出显示任何单词。如何突出显示多个单词?

回答:

正则表达式是必经之路!

function highlight($text, $words) {

preg_match_all('~\w+~', $words, $m);

if(!$m)

return $text;

$re = '~\\b(' . implode('|', $m[0]) . ')\\b~';

return preg_replace($re, '<b>$0</b>', $text);

}

$text = '

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod

tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,

quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo

consequat.

';

$words = 'ipsum labore';

print highlight($text, $words);

要以不区分大小写的方式进行匹配,请在正则表达式中添加“ i”

    $re = '~\\b(' . implode('|', $m[0]) . ')\\b~i';

注意:对于像“ä”这样的非英语字母,结果可能会因地区而异。

以上是 突出显示搜索中的多个关键字 的全部内容, 来源链接: utcz.com/qa/407179.html

回到顶部