Верх страницы
Обложка к записи Усечение строки до нужной длины на PHP
Время для прочтения: 0 мин. 0 сек.

Усечение строки до нужной длины на 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);
// Получим "Исходная ..."

Ссылки

ВКонтакте
Одноклассники
Linkedin
Telegram
WhatsApp

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

Суровый русский тимлид. Жил в Магадане, в офисе московских веб студий и в Тульской деревне. Виртуозно знает WordPress, PHP, ООП, Vue.js и вот это вот все.

Делает крутые высоконагруженные сайты, поэтому уже почти захватил весь рынок WordPress разработки в России. Не дает никому делать сайты без спроса.

Ведет блог о разработке, дайджест в телеграмме и в ВК.

Комментарии
Подписаться
Уведомить о
guest
8 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Василий
8 лет назад

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

Алексей
Алексей
8 лет назад

не подскажите как из тега the_title(); вырезать только английский текст а русский оставить
например:
есть заголовок поста «Вечнозеленое дерево ель — spruce»
необходимо в конце поста в ссылке вывести только «Вечнозеленое дерево ель»

kosmom
kosmom
6 лет назад

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

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

mihdan
6 лет назад
Ответить на  kosmom

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

Andrey
Andrey
4 лет назад

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