我有一个 PHP 脚本,它根据放入网站搜索框中的术语在我的数据库上运行搜索。这将返回一个文本块。假设我现在的搜索词是"test block"
。我的结果的一个例子是这个文本块:
这是使用搜索查询从数据库中收集的文本测试块。
现在,我的问题是:如何在文本块中“突出显示”搜索词,以便用户可以看到为什么首先拉出这个结果。使用上面的示例,类似以下内容就足够了:
这是通过搜索查询从数据库中收集的文本测试块。
到目前为止,我已经尝试了一些可以更改文本的方法,但我遇到的真正问题与区分大小写有关。例如,如果我使用以下代码:
$exploded = explode(' ', $search_terms);
foreach($exploded as $word) {
// I have to use str_ireplace so the word is actually found
$result = str_ireplace($word, '<b>' . $word . '</b>', $result);
}
它会通过我$result
和bold
任何单词的实例。这看起来是正确的,正如我在搜索结果的第二个示例中所希望的那样。但是,在用户使用"Test Block"
而不是 的情况下"test block"
,搜索词将大写并显示为:
这是通过搜索查询从数据库中收集的文本测试块。
这对我不起作用,尤其是当用户使用小写搜索词并且它们恰好落在句子的开头时。
本质上,我需要做的是在字符串中找到单词,<b>
直接在单词前面插入文本(在本例中),然后在单词后直接插入文本(</b>
在本例中),同时保留单词本身不被替换. 我相信这个规则preg_replace
,str_replace
所以我真的被困在做什么上。
任何线索将不胜感激。