突出显示字符串中的单词

时间:2015-11-12 22:14:53

标签: php preg-replace

我有一堆文字,我想在该文字上突出显示一些文字。我搜索了stackoverflow网站,并提出了几乎可以工作的东西。

PHP

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

    return $text;
}

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

echo highlighter($lyrics, $arr_accepted_keyword);

出于某种原因,它始终是最后一个词,而不是所有的词。为什么呢?

1 个答案:

答案 0 :(得分:3)

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

function highlighter($str, $arr_word)
{
    foreach($arr_word as $vword) {
        $str = preg_replace("/($vword)/Ui", "<span class=highlight>$1</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>?"