【发布时间】:2016-05-30 13:55:34
【问题描述】:
我尝试了这里回答的大部分解决方案,但他们都有同样的问题,这是我的问题。
我使用这个功能来突出搜索结果:
function highlightWords($searchtext, $searchstrings){
$searchstrings = preg_replace('/\s+/', ' ', trim($searchstrings));
$words = explode(' ', $searchstrings);
$highlighted = array();
foreach ( $words as $word ){
$highlighted[] = "<font color='#00f'><b>".$word."</b></font>";
}
return str_replace($words, $highlighted, $searchtext);
}
当我搜索包含 2 个或多个用空格分隔的字符串的文本并且其中任何一个具有我突出显示的数组中的任何 HTML 代码时,就会出现问题。
例如,searchtext="I have max system performance" AND searchstrings="max f"
在第一次迭代中,foreach 会将每个 max 替换为 <font color='#00f'><b>max</b></font>
在第二次迭代中,它会将每个 f 替换为 <font color='#00f'><b>f</b></font>
第二次迭代也将替换第一次替换中插入的 html 标签!
所以它也会替换字符串<font color='#00f'>中的f?
有什么建议吗? 谢谢 调剂
【问题讨论】:
标签: php html arrays highlight keyword