Битрикс, как корректно обрезать текст?

Дата: 4 января /

Есть несколько вариантов решения
1. Использовать функцию TruncateText, которая отсекает от строки все символы свыше указанной длины. Если отсечение произошло, то к строке справа дописывается многоточие.

Недостаток этого способа — некорректно работает с html тегами, нет возможности обрезать текст по словам.

$str = "1234567890";
echo TruncateText($str, 7);
// результатом будет строка "1234567..."

2. Использовать функцию html_cut класса CTextParser (битрикс 11.0.5 и выше), которая обрезает HTML/text до указанной длины с корректным закрытием тегов.

$obParser = new CTextParser;
if($arParams["PREVIEW_TRUNCATE_LEN"] > 0)
$arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);

3. Если необходимо обрезать текст по словам, то можно использовать следующий вариант

//$str - исходная строка
//$word_limit - количество символов, которое нам нужно
function anouncetext($str, $word_limit)
{
preg_match("/.{".$word_limit."}[^.!;?]*[.!;?]/si", $str.". ", $matches);
$str=$matches[0];
echo $str;
}

Подробнее здесь.

Статьи по теме:

  1. Как корректно вставить данные с кавычками в MySQL используя PHP?
  2. Битрикс, как скопировать инфоблок?
  3. Битрикс, ошибка при установке — Нет. Вероятно, каталог, используемый для сохранения параметров сессии, не доступен для записи
  4. Битрикс, в чем отличие [VALUE] от [~VALUE] ?
  5. Bitrix, список основных шаблонов в компонентах news

Метки: , ,

Рубрика: Bitrix, PHP

Оставить комментарий