Обрезка текста в 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; // Выведет обрезанный текст с многоточием
?>

        

Результат: "Этот текст описывает очень важную новость..."

Заключение

Представленный подход к обрезке текста помогает улучшить отображение контента. Аккуратное представление текста важно для улучшения пользовательского опыта. Рекомендуется использовать этот код в ваших проектах.

Покупка готового скрипта joomla 3

или просто напишите в телеграмм https://t.me/webalan