PHP:类似搜索的单词突出显示

时间:2010-03-11 02:55:26

标签: php replace word highlight

我正在为报纸应用程序开发一个简单的搜索引擎。当用户键入关键字时,会显示结果页面,用颜色突出显示该术语。

我目前正在这样做:

$title = str_ireplace($term, "<span class='highlight'>$term</span>", $note->Title);

很好,str_ireplace()进行不区分大小写的搜索,但是当案例与笔记不匹配时(即用户查找“MONEY”而笔记说“钱”),就会发生这种情况:

malvinas | Resultados de la búsqueda

   1. malvinas: Argentina va a la ONU y Londres se enfurece » en Actualidad  
      [...] Naciones Unidas, Ban-Ki Moon, ante quien reiterará que se cumplan las
resoluciones de la ONU sobre el tema de la soberanía de las Islas [...] 

该笔记的原始标题是“Malvinas:Argentina va a la ONU y Londres se enfurece”(不是“malvinas:”等)

如何在不更改原始单词的CaSe的情况下进行突出显示?

2 个答案:

答案 0 :(得分:2)

使用正则表达式:

$term = 'hello';
$str = 'Hello there';
$term_escaped = preg_quote($term);
$out = preg_replace("~$term_escaped~i", '<b>\0</b>', $str);

echo $out;

输出:

<b>Hello</b> there

答案 1 :(得分:1)

您应该使用backreferences,使用不区分大小写的修饰符。这样当你替换这个单词时,你将自己替换它(保持它的情况),而不是用搜索中使用的任何外壳替换它。

将此方法与preg_replace一起使用将允许您传递搜索词的数组,并为每个搜索词传递一般的替换模式。