Чтобы усечь длинную строку до нужно длины, не разрывая слов на части, я обычно использую следующий сниппет на PHP.
/** * Умная обрезка строки * @param string $str - исходная строка * @param int $lenght - желаемая длина результирующей строки * @param string $end - завершение длинной строки * @param string $charset - кодировка * @param string $token - символ усечения * @return string - обрезанная строка */ function cutStr($str, $lenght = 100, $end = ' …', $charset = 'UTF-8', $token = '~') { $str = strip_tags($str); if (mb_strlen($str, $charset) >= $lenght) { $wrap = wordwrap($str, $lenght, $token); $str_cut = mb_substr($wrap, 0, mb_strpos($wrap, $token, 0, $charset), $charset); return $str_cut .= $end; } else { return $str; } }
Вызывается так:
$str = 'Исходная строка для усечения'; echo cutStr($str, 10); // Получим "Исходная ..."
Ссылки
- wordwrap()
Источник: https://www.kobzarev.com/programming/boilerplate-truncate-line/