我有一堆文字,我想在该文字上突出显示一些文字。我搜索了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);
出于某种原因,它始终是最后一个词,而不是所有的词。为什么呢?
答案 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>?"