Я использую приведенный ниже код для усечения моего контента до и после первого поискового ключевого слова в моем тексте (это для моей страницы поиска), все работает как надо, кроме кода, который сокращает слова пополам в начале усечения, он не обрезает слова в конце усечения.
Пример:
lients at the centre of the relationship and to offer a first class service to them, which includes tax planning, investment management and estate planning. We believe that our customer focused and...
(редактировать: иногда в слове отсутствует более одного символа)
Вы увидите, что он отрубил «c» от «клиентов».Это происходит только в начале текста, а не в конце.Как я могу это исправить?Я верю, что я на полпути туда.пока код:
function neatest_trim($content, $chars, $searchquery,$characters_before,$characters_after) {
if (strlen($content) > $chars) {
$pos = strpos($content, $searchquery);
$start = $characters_before < $pos ? $pos - $characters_before : 0;
$len = $pos + strlen($searchquery) + $characters_after - $start;
$content = str_replace(' ', ' ', $content);
$content = str_replace("\n", '', $content);
$content = strip_tags(trim($content));
$content = preg_replace('/\s+?(\S+)?$/', '', mb_substr($content, $start, $len));
$content = trim($content) . '...';
$content = strip_tags($content);
$content = str_ireplace($searchquery, '<span class="highlight" style="background: #E6E6E6;">' . $searchquery . '</span>', $content);
}
return $content;
}
$results[] = Array(
'text' => neatest_trim($row->content,200,$searchquery,120,80)
);