搜索结果显示像谷歌的PHP

时间:2010-05-21 05:18:48

标签: php

我有一个段落,用户将在里面搜索,如果搜索词有3个匹配,但所有都在3个不同的地方

  

第二次世界大战,或第二次世界大战[1](通常缩写为二战或二战),是一场持续1939年至1945年的全球性军事冲突,涉及世界上大多数国家,包括所有大国,两个对立的军事联盟:盟军和轴心国。这是历史上最普遍的战争,动员了1亿多军事人员。在“全面战争”状态下,主要参与者将其整个经济,工业和科学能力用于战争努力,消除了民用和军用资源之间的区别。以对平民的重大行动为标志,包括大屠杀和战争中唯一使用核武器,这是人类历史上最致命的冲突,[2]伤亡人数超过七千万。

我必须搜索“war”,以便它显示为

  

世界战争 II,或第二次世界大战[1] ......处于“总战争”的状态,...... ....

2 个答案:

答案 0 :(得分:1)

$text = 'World War II, or the Second World W...';
$text = preg_replace('/war/ig', '<strong>$0</strong>', $text);

您可以在手册中详细了解preg_replaceregular expressions

答案 1 :(得分:0)

我没有PHP解决方案,但我建议您可以在客户端执行此操作。这意味着您可以缓存任何输出服务器端并保存一些周期:)

免责声明:这是我自己的项目。

查看jQuery插件searchTermsHighlightDemo。修改源代码而不是检查引用者,它会检查查询参数。

或者,如果您想在PHP中执行此操作,则最有可能使用stri_replace()。您可以避免使用正则表达式,因为您正在搜索直接匹配,并且不需要正则表达式提供的任何智能

$searchTerms = array('war');

foreach($searchTerms as $term) {

    $content = stri_replace($term, '<span class="highlight">' . $term . '</strong>', $content);

}

stri_replace(),如Dominic Rodger的评论中所述。