Усечение строки до нужной длины на PHP

Чтобы усечь длинную строку до нужно длины, не разрывая слов на части, я обычно использую следующий сниппет на 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);
// Получим "Исходная ..."

Ссылки

Поделиться
Плюсануть
Телеграмнуть

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

Нажимая на кнопку "Отправить", я даю согласие на обработку персональных данных.

8 комментариев

сначала новые
по рейтингу сначала новые по хронологии

Благодарю!!!

Автор
Кобзарёв Михаил

Пожалусты

Функция работает не до конца правильно. Ее попросили обрезать до 10 символов, а она вернула 12

А за идею спасибо

Задача стояла именно обрезка по словам с примерной длиной, приблизительно равной указанному количеству символов

Алексей

не подскажите как из тега the_title(); вырезать только английский текст а русский оставить

например:

есть заголовок поста "Вечнозеленое дерево ель - spruce"

необходимо в конце поста в ссылке вывести только "Вечнозеленое дерево ель"

Автор
Кобзарёв Михаил

preg_replace('|[^а-я]+|si', '', $str);

Спасибо, за замечательный сниппет. Штук десять разных способов испробовал. Ваш заработал как надо. Еще раз спасибо.

Автор
Кобзарёв Михаил

Всегда пожалуйста.