Подсветка поискового ключевого слова в PHP не подсвечивается правильно

Я пытаюсь выделить свой результат поиска в поиске PHP, но он выдвигает на первый план

Я использую код ниже

//connection to db
define('DB_HOST', 'localhost');
define('DB_NAME', 'dbname');
define('DB_USERNAME','root');
define('DB_PASSWORD','');

$con = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if( mysqli_connect_error()) echo "Failed to connect to MySQL: " . mysqli_connect_error();//get search term
$searchTerm = $_GET['term'];

$result = mysqli_query($con, "SELECT `location` FROM `locations` WHERE TRIM(location) LIKE '%".($_GET['term'])."%'");

$data = array();
while ($row = mysqli_fetch_assoc($result))
{

$name = str_replace($searchTerm, "<span style='background-color:pink;'>$searchTerm</span>", $row['location']);
array_push($data, $name);
}//return json data

echo json_encode($data);

Допустим, я ищу термин makutano
Я получаю результат, подобный показанному ниже:

введите описание изображения здесь

Я бы ожидал, что это только выделить makutano, но это не работает, как задумано.

Если я удалю str_replace($searchTerm, "<span style='background-color:pink;'>$searchTerm</span>" код мой результат будет как показано на рисунке ниже

введите описание изображения здесь

Моя база данных выглядит так

введите описание изображения здесь

Где я иду неправильно из моего кода? Любая помощь будет оценена

2

Решение

Если вы хотите отобразить информацию, вы должны объединить строку (что я делаю с implode()) вместо создания объекта JSON:

//get search term
$searchTerm = htmlspecialchars($_GET['term']);

$result = mysqli_query($con, "SELECT `location` FROM `locations` WHERE TRIM(`location`) LIKE '%".($_GET['term'])."%'");

$data = array();
while ($row = mysqli_fetch_assoc($result))
{
$name = $row['location'];
array_push($data, $name);
}

$string = '"' . implode('","', $data) . '"';
$newString = str_replace($searchTerm, "<span style='background-color:pink;'>$searchTerm</span>", $string);
echo $newString;

После того как вы создали строку, вы можете выполнить замену, чтобы добавить разметку к строке.


Ваш сценарий подвержен риску атак SQL-инъекций. Узнать о подготовленный заявления для MySQLi. Я сделал минимум в этом коде с помощью htmlspecialchars(),

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]