想知道是否有人可以帮助我朝着正确的方向前进,我正在构建一个搜索功能(php 和 mysql),它将显示搜索结果并突出显示用户搜索过的关键字。目前,我获取用户输入的搜索条件,并针对数据库进行查询,这可以正常工作以获得所需的结果。我的问题是
$highlight = preg_replace("/".$_GET['criteria']."/", "<span class='highlight'>".$_GET['criteria']."</span>", $_row['name']);
这只会突出显示一个短语而不是单个关键字。因此,例如,如果文档被称为“Hello world”并且用户准确地输入了这个,它会突出显示没有问题,但是如果用户输入“world hello”,它不会突出显示任何内容。我认为采用搜索条件并使用 explode 并单独检查每个单词是个好主意,但这似乎也失败了。这是我的查询以及我如何显示结果
$sql = "SELECT *
FROM uploaded_documents
WHERE dept_cat = 'procedures'
AND cat =:cat
AND keywords REGEXP :term ";
$result->execute(array(':cat' => $_GET['category'],':term' => $_GET['criteria']));
//display results
while($row = $stmt->fetch()){
$explode_criteria = explode(" ",$_GET['criteria']);
foreach($explode_criteria as $key){
$highlight = preg_replace("/".$key."/", "<span class='highlight'>".$key."</span>", $row['name']);
echo '<td><a target="_blank" href="'.$row['url'].'">'.$highlight.'</a></td>';
echo '<td>'.$row['version'].'</td>';
echo '<td>'.$row['cat'].'</td>';
echo '<td>'.$row['author'].'</td>';
echo '<td>'.$row['added'].'</td>';
echo '<td>'.$row['auth_dept'].'</td>';
echo '<td>';
}
}
为了篇幅的缘故,我在这里省略了代码并尽量保持最小,我一直试图将我的工作建立在以下帖子的基础上
我认为我的第一个问题是 while 循环中的 foreach 循环复制结果,但我想不出解决方法。
提前致谢