我有一个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>";
}
}
答案 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。
如果结果不能包含HTML - 请使用preg_replace。见这里:highlight multiple keywords in search
如果它可以包含HTML,那么您将需要使用DOM解析器将文本与HTML分开。示例解析器包括Simple HTML Dom和DOMDocument。