PHP - Make text entered into a search engine bold

by
Jeremy Canfield |
Updated: March 11 2020
| PHP articles
What this code does is to first store the input of the text entered into the search engine into the $string variable. Next, the preg_split command stores each word into it's own variable. For example, let's say Where is Super Man is entered into the search engine. The $keywords variable will create a variable for each word.
- $keyword[0] = Where
- $keyword[1] = is
- $keyword[2] = Super
- $keyword[3] = Man
The $sql statement first finds a perfect match with $keyword[0], and then finds anything else in the database which is like the additional keywords.
The $original, $new and str_ireplace commands simply makes the keywords bold.
<?php
$string = $_POST['keyword'];
$keywords = preg_split('/[\s,]+/', $string);
$sql = "select * from tablename where match (Title) against ('$keywords[0]' in boolean mode)
and Title like '%$keywords[1]%'
and Title like '%$keywords[2]%'
and Title like '%$keywords[3]%'
and Title like '%$keywords[4]%'
and Title like '%$keywords[5]%' ";
$sql_query = mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($sql_query)) {
$original = array($keywords[0],$keywords[1],$keywords[2],$keywords[3],$keywords[4],$keywords[5]);
$new = array('<b>'.$keywords[0].'</b>','<b>'.$keywords[1].'</b>','<b>'.$keywords[2].'</b>','<b>'.$keywords[3].'</b>','<b>'.$keywords[4].'</b>','<b>'.$keywords[5].'</b>',);
echo str_ireplace($original, $new, $row['Title']);
}
?>
Did you find this article helpful?
If so, consider buying me a coffee over at