fix wrong search results on special chars

This commit is contained in:
Jonas Heinrich 2020-07-22 18:52:52 +02:00
parent 5e216478a3
commit dae32307ff

View file

@ -431,32 +431,14 @@ add_action( 'widgets_init', 'kit_widgets_init' );
# Highlight query in search results # Highlight query in search results
function highlight_search_term_placeholders() { function highlight_results($text) {
static $iter = 0;
$ret = "|##{$iter}##|";
$iter++;
return $ret;
}
function highlight_search_term_cb() {
static $iter = 0;
$ret = "##{$iter}##";
$iter++;
return $ret;
}
function highlight_search_term($text){
if (is_search() && !is_admin()) { if (is_search() && !is_admin()) {
$keys = implode('|', explode(' ', get_search_query())); $sr = get_query_var('s');
$pattern = '/<[^>].*?>/i'; $keys = explode(' ', $sr);
preg_match_all($pattern,$text,$matches); $keys = array_filter($keys);
$placeholders = array(); $text = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="tx-indexedsearch-redMarkup">\0</strong>', $text);
foreach ($matches[0] as $v) {
$placeholders[] = highlight_search_term_placeholders();
}
$text = preg_replace_callback($pattern,'highlight_search_term_cb',$text);
$pattern2 = '/(' . $keys .')/iu';
$text = preg_replace($pattern2, ' <strong class="tx-indexedsearch-redMarkup">\1</strong> ', $text);
$text = preg_replace($placeholders,$matches[0],$text);
} }
return $text; return $text;
} }
add_filter('the_excerpt', 'highlight_search_term');
add_filter('the_excerpt', 'highlight_results');