Иногда текст слишком длинный и его нужно сократить.
Это актуально для новостных лент, описаний товаров и превью статей. В PHP есть несколько способов обрезать текст: по символам, по словам, с учётом кодировки и даже с добавлением троеточия. Разберём самые удобные и безопасные методы.
Способ 1. substr() — обрезка по символам
Функция substr()
обрезает строку от указанной позиции.
phpКопироватьРедактировать$text = "Пример длинного текста";
$short = substr($text, 0, 12);
echo $short; // "Пример длинн"
Недостаток: не учитывает многобайтовые символы (например, кириллицу), может «резать» буквы посередине.
Способ 2. mb_substr() — для текста на русском
Используй mb_substr()
, если работаешь с кириллицей.
phpКопироватьРедактировать$text = "Пример длинного текста";
$short = mb_substr($text, 0, 12);
echo $short; // "Пример длинн"
Добавь троеточие для эстетики:
phpКопироватьРедактировать$short = mb_substr($text, 0, 12) . "...";
Способ 3. Обрезка по словам
Если не хочешь «резать» слово на полуслове, используй обрезку по словам:
phpКопироватьРедактироватьfunction cut_by_words($text, $limit = 100) {
if (mb_strlen($text) <= $limit) return $text;
$cut = mb_substr($text, 0, $limit);
return mb_substr($cut, 0, mb_strrpos($cut, ' ')) . "...";
}
$text = "Это пример текста, который мы хотим обрезать по словам";
echo cut_by_words($text, 30); // "Это пример текста, который..."
Этот способ аккуратно обрывает текст на последнем полном слове.
Способ 4. strip_tags() + обрезка для HTML-текста
Если тебе нужно обрезать HTML-контент — сначала очисти его от тегов.
phpКопироватьРедактировать$html = "<p>Это <strong>важный</strong> текст</p>";
$plain = strip_tags($html);
echo mb_substr($plain, 0, 20) . "...";
Так ты избежишь обрыва HTML-тегов и ошибок отображения.
Заключение
Обрезка текста в PHP — задача простая, если знаешь правильные функции.substr()
— базовая, mb_substr()
— для русского, cut_by_words()
— для аккуратных превью. Добавляй strip_tags()
, если работаешь с HTML. Так ты получишь понятный, чистый и безопасный фрагмент текста, готовый к выводу на сайт.