好的,我有一些PHP代码可以输出从Wordpress数据库中提取的结果。
if ($searchPostResults) :
echo '<ul>';
foreach ($searchPostResults as $pagePosts)
echo '<li><span class="searchResult"><a href="' . get_the_permalink($pagePosts->ID) . '" title="">' . get_the_title($pagePosts->ID) . '</a></span></li>';
echo '</ul>';
else :
?>
<p>No Results</p>
<?php
endif;
因此,在每个结果中都会显示关键字。 我想把这个关键字加粗。
关键字存储在此处:
$searchVal = (isset($_POST["searchVal"])) ? $_POST["searchVal"] : "";
实施例: 我是搜索结果。
为每个结果执行此操作的最佳方法是什么。 我想过使用grep和substrings,但这似乎有点长篇大论。
干杯
答案 0 :(得分:1)
使用 preg_replace 方法,我们可以突出显示搜索文字。
以下是示例PHP代码段:
<?php
$result = "I'm a search result.";
$searchVal = "search";
$sk = explode(" ",$searchVal);
$result = preg_replace('/('.implode('|', $sk) .')/iu', '<strong class="highlighter">\0</strong>', $result);
echo $result;
?>
使用以下模式仅匹配单词:
$result = preg_replace('/\b('.implode('|', $sk) .')\b/iu', '<strong class="highlighter">\0</strong>', $result);
在WP代码上集成此功能时,将标题分配给$ result
$result = get_the_title($pagePosts->ID);
除此之外,您还可以使用css将样式应用于突出显示的文本。
strong.highlighter {
background-color:yellow;
color:blue;
}
答案 1 :(得分:0)
只需使用str_replace:
str_replace($searchVal, '<strong>'.$searchVal.'</strong>', get_the_title($pagePosts->ID))
替换get_the_title($pagePosts->ID))
。
如果它不匹配,标题将通过不变。
(注意:这不会解决案例不匹配问题。)a