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

Ссылки

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

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, Opencart, DLE, Laravel, Moonshine, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

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

Вы всегда можете нанять меня.

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

8 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Василий
11 лет назад

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

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

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

kosmom
kosmom
9 лет назад

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

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

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

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

Andrey
Andrey
7 лет назад

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

Предыдущая запись

Давайте дружить
в Telegram

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