Обрезка текста в PHP: Аккуратное усечение с многоточием
- Показывать справа: 0
В этой статье рассматривается вопрос обрезки текста в PHP. Будет показано, как обрезать новость до заданной длины, сохранив слова и добавив многоточие, чтобы указать на усечение. Эта техника полезна при выводе кратких анонсов новостей, описаний товаров или других длинных текстов в ограниченном пространстве.
Проблема: Длинный текст и ограниченное пространство
Пример: на новостном портале необходимо отобразить описания новостей на главной странице или в списке. Однако полные описания слишком длинные и портят верстку. Требуется решение.
Решение: Обрезка с сохранением слов и многоточием
Решение: обрезать текст до определенной длины, обеспечив сохранность слов и добавление многоточия в конце. Ниже представлен код:
<?php
function truncate_with_ellipsis($text, $length) {
if (mb_strlen($text) <= $length) {
return $text; // Если строка короче заданной длины, возвращаем ее как есть
}
$truncated_text = mb_substr($text, 0, $length); // Обрезаем строку до указанной длины
// Находим последнее слово в обрезанной строке
$last_space = mb_strrpos($truncated_text, ' ');
if ($last_space !== false) {
// Если есть пробел, обрезаем до него, чтобы не обрывать слово
$truncated_text = mb_substr($truncated_text, 0, $last_space);
}
return $truncated_text . "..."; // Добавляем многоточие
}
$news_item_description = $news_item['description']; // Получаем описание новости
$truncated_description = truncate_with_ellipsis($news_item_description, 100); // Обрезаем до 100 символов
echo $truncated_description;
?>
Вариант функции немного другой
<?php
function cropStr($str, $length = 300 ) {
$str = trim($str);
$max = mb_strlen($str, 'UTF-8');
//Обрезали текст
$result = mb_substr($str, 0, $length, 'UTF-8');
$result2 = trim(mb_substr($str, $length, $max, 'UTF-8'));
$a = preg_split('/[.!?]/u', $result2, -1);
$pod = trim($a[0]);
$max = mb_strlen($pod, 'UTF-8');
$s = mb_substr($result2, $max, 1, 'UTF-8');
return $result ." ".$pod.$s;
}
Разбор кода
Разбор кода:
function truncate_with_ellipsis($text, $length): Определяет функцию, которая принимает текст и максимальную длину.mb_strlen($text) <= $length: Проверяет, не короче ли текст, чем указанная длина. Если да, возвращается исходный текст. Используютсяmb_strlen()иmb_substr()для корректной работы с многобайтовыми символами.mb_substr($text, 0, $length): Обрезает текст до указанной длины.mb_strrpos($truncated_text, ' '): Находит позицию последнего пробела.mb_substr($truncated_text, 0, $last_space): Обрезает текст до последнего пробела, чтобы не обрывать слово.return $truncated_text . "...": Возвращает обрезанный текст с многоточием.
Как использовать
Для использования вызовите функцию truncate_with_ellipsis(), передав ей описание новости и желаемую длину. Пример:
<?php
$description = "Этот текст описывает очень важную новость. Здесь много деталей и подробностей, которые нужно рассказать.";
$short_description = truncate_with_ellipsis($description, 50);
echo $short_description; // Выведет обрезанный текст с многоточием
?>
Результат: "Этот текст описывает очень важную новость..."
Заключение
Представленный подход к обрезке текста помогает улучшить отображение контента. Аккуратное представление текста важно для улучшения пользовательского опыта. Рекомендуется использовать этот код в ваших проектах.