想知道是否有人可以幫助我向正確的方向發展,我構建了搜索功能(php和mysql),它將顯示搜索結果並突出顯示用戶搜索的關鍵字。目前我抓住用戶輸入的搜索條件,並對數據庫進行查詢,該數據庫正常工作以獲得所需的結果。這個問題我已經是mysql和php搜索突出顯示
$highlight = preg_replace("/".$_GET['criteria']."/", "<span class='highlight'>".$_GET['criteria']."</span>", $_row['name']);
這將只強調一個短語,而不是個別關鍵字。例如,如果文檔被稱爲「Hello world」,並且用戶完全輸入了它,它將突出顯示沒有問題,但是如果用戶鍵入「world hello」,它將不會突出顯示任何內容。我認爲這是一個好主意,採取搜索標準,並使用爆炸和單獨檢查每個單詞,但這似乎也失敗了。這裏是我的查詢,我如何顯示結果
$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>';
}
}
對於長的緣故,我已經在這裏省略代碼,並試圖保持最小的,我一直在試圖立足於以下崗位
我的工作highlighting search results in php/mysql
我認爲我的第一個問題是while循環中的foreach循環複製結果,但我不能想辦法繞過它。
在此先感謝
這裏有什麼問題?它是不突出顯示任何內容還是僅突出顯示最後一個字? – Dale
基本上發生的是,用戶輸入的最後一個單詞突出顯示,沒有其他東西 – Greyhamne
在正則表達式中插入用戶字符串時,您一定要使用preg_quote()。 – flyx