Как решить дубликаты в результатах поиска внутри выдержки - PullRequest
1 голос
/ 04 мая 2020

Я успешно выделяю результаты, но проблема в том, что код дублирует результаты. Например, даже когда у меня есть только одно вхождение «этого случайного текста», код вставляет дублированные результаты в отрывок странным образом. Застрял здесь, пожалуйста, помогите. Я приложил скриншот, чтобы помочь понять проблему. Из моего текста также видно, что предложение теперь не имеет смысла, поскольку оно не находит и не усекает должным образом, так что появляется только абзац, содержащий соответствующее ключевое слово. enter image description here

function wps_highlight_results($text){
     if(is_search()){
     $sr = get_query_var('s');
     $keys = explode(" ",$sr);
     $text = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">'.$sr.'</strong>', $text);
     }
     return $text;
}
add_filter('the_excerpt', 'wps_highlight_results');

1 Ответ

2 голосов
/ 04 мая 2020

Если вы хотите заменить все вхождения строки поиска (например, in the beginning) на <strong class="search-excerpt">in the beginning</strong>, тогда вам нужно изменить код:

$text = preg_replace(
    preg_quote("/$sr/iu"),
    '<strong class="search-excerpt">'.$sr.'</strong>',
    $text
);

Я добавил вызов preg_quote(), чтобы убедиться, что все символы регулярного выражения, которые могут быть в $sr, правильно экранированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...