我有一个段落,用户将在里面搜索,如果搜索词有3个匹配,但所有都在3个不同的地方
离
第二次世界大战,或第二次世界大战[1](通常缩写为二战或二战),是一场持续1939年至1945年的全球性军事冲突,涉及世界上大多数国家,包括所有大国,两个对立的军事联盟:盟军和轴心国。这是历史上最普遍的战争,动员了1亿多军事人员。在“全面战争”状态下,主要参与者将其整个经济,工业和科学能力用于战争努力,消除了民用和军用资源之间的区别。以对平民的重大行动为标志,包括大屠杀和战争中唯一使用核武器,这是人类历史上最致命的冲突,[2]伤亡人数超过七千万。
我必须搜索“war”,以便它显示为
世界战争 II,或第二次世界大战[1] ......处于“总战争”的状态,...... ....
答案 0 :(得分:1)
$text = 'World War II, or the Second World W...';
$text = preg_replace('/war/ig', '<strong>$0</strong>', $text);
您可以在手册中详细了解preg_replace和regular expressions。
答案 1 :(得分:0)
我没有PHP解决方案,但我建议您可以在客户端执行此操作。这意味着您可以缓存任何输出服务器端并保存一些周期:)
免责声明:这是我自己的项目。
查看jQuery插件searchTermsHighlight。 Demo。修改源代码而不是检查引用者,它会检查查询参数。
或者,如果您想在PHP中执行此操作,则最有可能使用stri_replace()
。您可以避免使用正则表达式,因为您正在搜索直接匹配,并且不需要正则表达式提供的任何智能。
$searchTerms = array('war');
foreach($searchTerms as $term) {
$content = stri_replace($term, '<span class="highlight">' . $term . '</strong>', $content);
}
stri_replace()
,如Dominic Rodger的评论中所述。