对于我的WordPress搜索结果页面,我添加了高亮显示来显示搜索词出现在结果页面的位置。但是替换代码将页面的文本更改为大小写这是在搜索词中使用的
例如:
Search Term: remote Employee ENGAGE
Text on Page before highlight: Remote employee engagement
Resulting text after highlight replacement: remote Employee ENGAGEment
Desired text after highlight replacement: Remote employee engagement
以下是我在content-search.php
中使用的代码<?php $title = str_ireplace( $s, '<span class="search-instance">'.$s.'</span>', get_the_title() ) ?>
<?php $excerpt = str_ireplace( $s, '<span class="search-instance">'.$s.'</span>', get_the_excerpt() ) ?>
<?php echo $title; ?>
<?php echo $excerpt; ?>
和css来突出显示文本:
span.search-instance {
font-weight: bold;
background: #fffdca;
padding: 2px;
}
有没有人能提供一些建议,如何在不区分大小写的搜索下完成高亮显示,同时在高亮显示过程中不改变页面上文本的大小写?
欢呼,SunnyOz
更新:
我不认为我可以做我想要的str_ireplace
。
我想我可能需要使用preg_replace
和一些regex
之类的东西,也允许部分匹配(例如:不限制匹配字边界)-但我不知道如何在我的代码示例中设置。
如果我真的需要使用preg_replace
而不是str_ireplace
,我仍然可以使用一些帮助。
如何创建一个不区分大小写的使用搜索词分别搜索get_the_title()
和get_the_excerpt()
-使用preg_replace
?
试试这个
$string = 'Test test REmotE emPloYee engAgeMent end string ';
$keys = array('remote Employee ENGAGE');
$patterns = array();
foreach($keys as $key) {
$patterns[] = '/b('.$key.'([^ ]*))b/i';
echo preg_replace($patterns, '<span class="search-instance">$0</span>', $string);
}
你的代码有什么问题,你正在寻找一个短语并进行替换。在这种情况下,我们需要找到一个模式的字符串,如果匹配这个模式然后包装与标签。
我确实找到了做我想做的事的方法。我从这个页面找到了解决方案:https://www.wpbeginner.com/wp-tutorials/how-to-highlight-the-search-terms-in-results-in-wordpress/
下面是我修改的新代码:
<?php $title = get_the_title(); $keys= explode(" ",$s); $title = preg_replace('/('.implode('|', $keys) .')/iu', '<span class="search-instance">