【问题标题】:Highlight search keyword in PHP does not highlight correctly突出显示 PHP 中的搜索关键字未正确突出显示
【发布时间】:2016-06-16 19:45:56
【问题描述】:

我试图在 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);

假设我在搜索ma​​kutano这个词 我最终得到如下所示的结果:

我希望它只会突出显示makutano,但它并没有按预期工作。

如果我删除 str_replace($searchTerm, "&lt;span style='background-color:pink;'&gt;$searchTerm&lt;/span&gt;" 代码,我的结果将如下图所示

我的数据库位置看起来像

我的代码哪里出错了?任何帮助将不胜感激

【问题讨论】:

  • 您将信息推送到 JSON 格式,这并不是显示信息的真正好格式。
  • @JayBlanchard 我应该怎么做。我在这方面不太擅长
  • 通过 javascript 而不是 php 在您的页面上执行此操作。
  • 您可以连接结果然后回显,而不是 JSON。
  • @JorgeCampos 我可以使用哪个 javascript 代码?

标签: php highlight str-replace


【解决方案1】:

如果你想显示你必须连接一个字符串的信息(我用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. 了解preparedMySQLi 语句。我使用htmlspecialchars() 完成了这段代码中的最低限度的工作。

【讨论】:

  • 突出显示效果很好,但它消除了引号。在单词之间,例如"machakos mwala makutano mwala",
  • 编辑添加引用@OmariOmosa
猜你喜欢
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2011-02-25
相关资源
最近更新 更多