突出显示 PHP 中的搜索关键字未正确突出显示
Highlight search keyword in PHP does not highlight correctly
我试图在 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>"
代码,我的结果将如下图所示
我的数据库位置看起来像
我的代码哪里出错了?任何帮助将不胜感激
如果您想显示信息,您必须连接一个字符串(我用 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;
创建字符串后,您可以执行替换以将标记添加到字符串。
Your script is at risk for SQL Injection Attacks. Learn about prepared statements for MySQLi。我使用 htmlspecialchars()
.
完成了这段代码中的最低限度
我试图在 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>"
代码,我的结果将如下图所示
我的数据库位置看起来像
我的代码哪里出错了?任何帮助将不胜感激
如果您想显示信息,您必须连接一个字符串(我用 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;
创建字符串后,您可以执行替换以将标记添加到字符串。
Your script is at risk for SQL Injection Attacks. Learn about prepared statements for MySQLi。我使用 htmlspecialchars()
.