突出显示字符串中的单词

Highlight words in string

我有一堆文本,我想突出显示该文本中的一些词。我搜索了 Whosebug 网站并提出了一些几乎可行的方法。

PHP

function highlighter($str, $arr_word)
{
    foreach($arr_word as $vword) {
        $text = preg_replace("|($vword)|Ui", "<span class=highlight></span>", $str);
    }

    return $text;
}

$lyrics = 'hello looking for';
$arr_accepted_keyword = array('hello', 'for');

echo highlighter($lyrics, $arr_accepted_keyword);

出于某种原因,它总是突出显示最后一个词,而不是所有词。为什么?

问题是您要突出显示 原始 字符串中的每个单词,而不是 更新后的 字符串中的每个单词。

function highlighter($str, $arr_word)
{
    foreach($arr_word as $vword) {
        $str = preg_replace("/($vword)/Ui", "<span class=highlight></span>", $str);
    }

    return $str;
}

$lyrics = "hello, is it me you're looking for?";
$arr_accepted_keyword = array('hello', 'for');

echo highlighter($lyrics, $arr_accepted_keyword);
// "<span class=highlight>hello</span>, is it me you're looking <span class=highlight>for</span>?"