строка — PHP: выделение запроса и усечение после (определенного) переноса слова, а не количества символов

У меня есть эта функция PHP:

function hilite($string)
{
$term = $_GET['s'];
if( $term ) {
if( isset($GLOBALS['re_matches']) || preg_match_all('~("[^"]+"|\b\w+\b)~', $term, $GLOBALS['re_matches']) )
{
foreach( $GLOBALS['re_matches'][0] as $match )
{
$match = quotemeta(str_replace(array('+', '-', '*', '"', '(', ')'), '', $match));
$string = preg_replace("/\b($match)\b/i", "<span class=\"hilite\">$1</span>", $string);
}
}
}
return $string;
}

и я использую это в моем умном шаблоне:

 {$text.title|mb_substr::0::82|htmlspecialchars|hilite}{if mb_strlen($text.title) > 82} ... {/if}
{$text.description|mb_substr::0::82|htmlspecialchars|hilite}{if mb_strlen($text.description) > 82} ... {/if}

Это хорошо работает, если я не усекаю это,

{$text.title|htmlspecialchars|hilite}
{$text.description|htmlspecialchars|hilite}

но если я это сделаю, у меня есть случаи, когда усечение режет сразу после того, где находится выделенное слово запроса, так что все ломается.

Мой вопрос: что было бы самым простым решением, чтобы не разбить выделенное слово, если выделенное слово является последним и где оно разбито по количеству символов.

Заранее спасибо.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]