在PHP中突出显示搜索结果的一部分

时间:2017-06-29 06:36:20

标签: php wordpress string

好的,我有一些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,但这似乎有点长篇大论。

干杯

2 个答案:

答案 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