diff --git a/kit/functions.php b/kit/functions.php index 2c931c7..788f4bd 100644 --- a/kit/functions.php +++ b/kit/functions.php @@ -387,12 +387,32 @@ add_action( 'widgets_init', 'kit_widgets_init' ); # Highlight query in search results -function kit_highlight_results($text){ - if(is_search()){ - $sr = get_query_var('s'); - $keys = explode(" ",$sr); - $text = preg_replace('/('.implode('|', $keys) .')/iu', ''.$sr.'', $text); - } - return $text; +function highlight_search_term_placeholders() { + static $iter = 0; + $ret = "|##{$iter}##|"; + $iter++; + return $ret; } -add_filter('the_excerpt', 'kit_highlight_results'); +function highlight_search_term_cb() { + static $iter = 0; + $ret = "##{$iter}##"; + $iter++; + return $ret; +} +function highlight_search_term($text){ + if(is_search() && !is_admin()){ + $keys = implode('|', explode(' ', get_search_query())); + $pattern = '/<[^>].*?>/i'; + preg_match_all($pattern,$text,$matches); + $placeholders = array(); + 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, ' \1 ', $text); + $text = preg_replace($placeholders,$matches[0],$text); + } + return $text; +} +add_filter('the_excerpt', 'highlight_search_term'); diff --git a/kit/search.php b/kit/search.php index 09078f0..d21438b 100644 --- a/kit/search.php +++ b/kit/search.php @@ -4,7 +4,7 @@ get_header();
- +
@@ -20,6 +20,7 @@ get_header();
+