Membuat Highlight Kata Kunci dalam Hasil Pencarian dengan PHP

0 608

Highlight kata kunci dalam hasil pencarian akan membantu pengguna untuk mengidentifikasi hasil yang sesuai dengan mudah. Dalam tutorial sebelumnya, kita telah melihat Advanced Search di PHP. Dalam contoh ini, kami menyoroti beberapa kata kunci di hasil penelusuran.

Kami mencari judul dan deskripsi database untuk memeriksa apakah kata kunci telah terjadi. Jika cocok maka akan ditemukan, kami menyoroti kata kunci tersebut dengan menggunakan str_ireplace () berfungsi untuk mengganti string case insensitive.

Formulir Pencarian HTML

Kami memiliki input pencarian untuk memasukkan kata kunci. Kami mencari database untuk memeriksa apakah setidaknya salah satu kata kunci pencarian yang masuk ditemukan.

<form name="frmSearch" method="post" action="">
	<div class="search-box">
		<label class="search-label">Enter Search Keyword:</label>
		<div>
			<input type="text" name="keyword" class="demoInputBox" value="<?php echo $keyword; ?>"	/>
		</div>				
		<div>
			<input type="submit" name="go" class="btnSearch" value="Search">
		</div>
	</div>
</form>

Search dan Highlight Kata Kunci yang Sesuai

Kode PHP ini untuk mencari kata kunci dalam judul atau deskripsi. Jika kecocokan ditemukan, kami memanggil metode highlightKeywords () untuk menyorot kata kunci dalam huruf tebal dengan menambahkan HTML di sekitar kata kunci. Kode itu,

<?php
	$conn = mysqli_connect("localhost", "root", "", "database");	
	$keyword = "";	
	$queryCondition = "";
	if(!empty($_POST["keyword"])) {
		$keyword = $_POST["keyword"];
		$wordsAry = explode(" ", $keyword);
		$wordsCount = count($wordsAry);
		$queryCondition = " WHERE ";
		for($i=;$i<$wordsCount;$i++) {
			$queryCondition .= "title LIKE '%" . $wordsAry[$i] . "%' OR description LIKE '%" . $wordsAry[$i] . "%'";
			if($i!=$wordsCount-1) {
				$queryCondition .= " OR ";
			}
		}
	}
	$orderby = " ORDER BY id desc"; 
	$sql = "SELECT * FROM links " . $queryCondition;
	$result = mysqli_query($conn,$sql);	
?>
<?php 
	function highlightKeywords($text, $keyword) {
		$wordsAry = explode(" ", $keyword);
		$wordsCount = count($wordsAry);
		
		for($i=;$i<$wordsCount;$i++) {
			$highlighted_text = "<span style='font-weight:bold;'>$wordsAry[$i]</span>";
			$text = str_ireplace($wordsAry[$i], $highlighted_text, $text);
		}

		return $text;
	}
?>
Demo

Get real time updates directly on you device, subscribe now.

Leave A Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.