Bitrix, php как правильно обрезать текст

Часто в ситуации, когда текстовое описание чуть длиннее, чем предусмотрено в дизайне (или же просто длинное описание сложно для восприятия в блоке или инфоблоке, если речь о Битрикс требуется обрезать текст в соответствии с определёнными условиями.

1. самое простое - обрезать текст по количеству символов

для однобайтной кодировки:
$str = "1234567890";
echo substr($str, 0, 7);
// результатом обрезки текста будет строка "1234567..."

для utf-8
$str = "1234567890";
echo mb_substr($str, 0, 7,'utf-8');
// результатом обрезки текста будет строка "1234567..."

В Bitrix есть встроенная функция для обрезки текста TruncateText
$str = "1234567890";
echo TruncateText($str, 7);
// результатом обрезки текста будет строка "1234567..."

С версии 11 в класс CTextParser добавлена функция, которая корректно обрезает текст с учётом HTML-тэгов, и в случае уменьшения подставляет многоточие …:
// в $arParams["PREVIEW_TRUNCATE_LEN"] - максимальная длина текста
$obParser = new CTextParser;
if($arParams["PREVIEW_TRUNCATE_LEN"] > 0)
$arItem["PREVIEW_TEXT"] = $obParser->html_cut($arItem["PREVIEW_TEXT"], $arParams["PREVIEW_TRUNCATE_LEN"]);

PHP обрезать текст по количеству слов

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

PHP обрезать текст по количеству символов с учётом пробелов

Чтобы избежать разрыва на полу… слове, можно воспользоваться “хитростью” - после обрезки по длине, ещё немного уменьшить строку справа до последнего пробела.

Для однобайтной кодировки
function cropStr($str, $size){
$str = substr($str,0, $size); // отрезаем строку по указанному количеству символов.
return substr($str, 0, strrpos($str, ' ' )); //получаем позицию последнего пробела и обрезаем до нее строку
}

Для многобайтной кодировки - следует указывать в функции mb_subst последним параметром кодировку, в данном случае ‘utf-8′

function cropStr($str, $size){
return mb_substr($str,0,mb_strrpos(mb_substr($str,0,$size,'utf-8'),' ',utf-8),'utf-8');
}

Почти тоже самое, но обрезаем строку до пробела, следующего за максимальной длиной:
т.е. строго говоря, допускаем увеличение “максимальной” длины на количество символов в слове

function cropStr($str, $size){
return substr($str,0,strpos($str,' ',$size));
}

Метки:

Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)

html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)

ссылка (для отправки по почте)

1 комментарий к записи “Bitrix, php как правильно обрезать текст”

  1. JamieSherb сообщает :

    Хостинг - что это такое. поиск домена VDS Теперь мы попробуем разобраться с еще более сложным вопросом. Его можно сформулировать так:
    «VDS-хостинг - что это такое?».
    Чтобы постараться поиск домена ответить на данный вопрос, представим себе одну из комнат крупного хостинг-провайдера.
    Рядами в большом зале размещены серверы, их очень много.
    Так вот, если бы технологии VDS поиск домена не существовало, каждый из компьютеров отвечал бы за работу всего одного сайта.

Добавить комментарий