即时关键字突出显示

时间:2012-01-14 15:56:09

标签: php html css

我有一个PHP搜索脚本,我想突出显示用户使用标签搜索过的关键字。我怎么能这样做?

我的代码是:

if(!empty($_GET['q'])){
$keywords=explode(' ',$_GET['q']);
foreach($keywords as $query){
$query=mysql_real_escape_string($query);
$likes[]="keywords LIKE '%{$query}%'";
}

$searchResult=mysql_query("select * from questions where ".implode('or ',$likes)."limit 1");
while($row=mysql_fetch_assoc($searchResult)){
    $results="<div class='webresult'>{$row['result']}</div>";
}
}

2 个答案:

答案 0 :(得分:0)

如果$row['result']不包含html,您可以执行字符串替换:将结果中的所有关键字替换为<span class="highlight">keyword</span>

一个简单的例子:

...
while($row=mysql_fetch_assoc($searchResult)) {
  $res = $row['result'];
  foreach($keywords as $kw) {
    $res = str_replace($kw, '<span class="highlight">' . htmlspecialchars($kw) . '</span>', $res);
  }
  $results="<div class='webresult'>{$res}</div>";
}
...

答案 1 :(得分:0)

两种解决方案,具体取决于结果是否包含HTML。

  1. 如果结果不能包含HTML - 请使用preg_replace。见这里:highlight multiple keywords in search

  2. 如果它可以包含HTML,那么您将需要使用DOM解析器将文本与HTML分开。示例解析器包括Simple HTML DomDOMDocument