Wordpress MySQL 查询结果 - 如何突出显示在显示中找到的字符串 Table

Wordpress MySQL Query Results - How to Highlight Strings Found in Displayed Table

我创建了一个功能正常的 WordPress 页面,其中包含两个搜索框(以及它们之间的一对 and/or 按钮),用于查询 sql 数据库和 returns 两列 table 行包含一个(或两个,视情况而定)搜索字符串($search 和 $search2),然后在结果超过 100 行时分页。我已经尝试了三种不同的方法来在 table 中突出显示这些字符串,但无法正常工作。所以我非常感谢一些帮助。 php 代码的相关部分(我使用 WordPress Insert PHP 插件)是:

[insert_php]

* * * * 

if ($andor == "and"){
$result = mysql_query("SELECT DATE(start_date), EVENT FROM {$table} WHERE EVENT REGEXP '$search'  >0 AND EVENT REGEXP '$search2' >0 LIMIT {$limits}");
}
else{
$result = mysql_query("SELECT DATE(start_date), EVENT FROM {$table} WHERE EVENT REGEXP '$search'  >0 OR EVENT REGEXP '$search2' >0 LIMIT {$limits}");
}
 * * * *
while($row = mysql_fetch_row($result))
{
    echo "<tr>";
    foreach($row as $cell)
    echo "<td>$cell</td>";
    echo "</tr>\n";
}

[/insert_php]

首先,我在 functions.php 文件中添加了一个函数并尝试调用它,但无法正常工作

function highlight_word( $content, $word) {
    $replace = '<span style="background-color: #FF0;">' . $word . '</span>'; 
    $content = str_replace( $word, $replace, $content ); 
    return $content; 
};

然后我尝试在单独的 while 循环中替换字符串。最后,我尝试按如下方式更改现有的 while 循环:

while($row = mysql_fetch_row($result))
{
    echo "<tr>";
    foreach($row as $cell)
    echo "<td>" . str_replace($search, '<span style="background-color: #FF0;">' . $search . '</span>', $cell) . "</td>";
    echo "</tr>\n";
}

如果我可以将突出显示限制在第二列 ("EVENTS") 上,那将很有帮助,但这远不如让它正常工作重要。而且,是的,我会将代码升级到 mysqli 并在完成之前转义查询字符串。一如既往,感谢这个伟大社区的所有人。

为什么不使用一些高亮js库?

mark.js 开箱即用地支持在表格中突出显示

$("table tr td:nth-child(1)").mark('keyword');

Check this example