【问题标题】:PHP: Search-like word highlightingPHP:类似搜索的单词突出显示
【发布时间】:2011-01-26 04:55:04
【问题描述】:

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

我目前正在这样做:

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

太好了,str_ireplace() 进行不区分大小写的搜索,但是当大小写与注释不匹配时(即用户查找“MONEY”并且注释显示“money”),就会发生这种情况:

马尔维纳斯 | 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íade las Islas [...]

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

如何在不改变原词的 CaSe 的情况下进行高亮显示?

【问题讨论】:

    标签: php replace word highlight


    【解决方案1】:

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

    将此方法与preg_replace 一起使用将允许您传入一组搜索词,以及每个搜索词的通用替换模式。

    【讨论】:

      【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 1970-01-01
        • 2017-12-04
        • 2014-02-15
        相关资源
        最近更新 更多