Верх страницы
Логотип Telegram
@Злой_Полицейский — авторский канал вашего покорного слуги в Telegram, где я пишу заметки о веб-разработке, программировании, PHP, инструментах и WordPress.
Обложка к записи Усечение строки до нужной длины на 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);
// Получим "Исходная ..."

Ссылки

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

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

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

Комментарии
Подписаться
Уведомить о
guest

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

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

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

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

kosmom
kosmom
8 лет назад

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

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

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

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

Andrey
Andrey
6 лет назад

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

Михаил Кобзарёв (mihdan)

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, фильмы и сериалы