Анонс, превью, аннотация – это часть статьи в которой содержится краткое содержание и смысл статьи, выводится в категориях и списках. По-хорошему анонс должен писаться отдельно и хранится в отдельном поле. В случаях где анонсы не заполнены, сформировать и вывести их можно несколькими способами:
Функция удалят HTML разметку и урезает текст до определенного количества символов указанного в $limit
, но оставляет последнее слово целым. Если в конце текста попадаются .
, !
, ?
– они остаются как есть, в других случаях добавляется многоточие.
function preview_text($value, $limit = 300)
{
$value = stripslashes($value);
$value = htmlspecialchars_decode($value, ENT_QUOTES);
$value = str_ireplace(array('<br>', '<br />', '<br/>'), ' ', $value);
$value = strip_tags($value);
$value = trim($value);
if (mb_strlen($value) < $limit) {
return $value;
} else {
$value = mb_substr($value, 0, $limit);
$length = mb_strripos($value, ' ');
$end = mb_substr($value, $length - 1, 1);
if (empty($length)) {
return $value;
} elseif (in_array($end, array('.', '!', '?'))) {
return mb_substr($value, 0, $length);
} elseif (in_array($end, array(',', ':', ';', '«', '»', '…', '(', ')', '—', '–', '-'))) {
return trim(mb_substr($value, 0, $length - 1)) . '...';
} else {
return trim(mb_substr($value, 0, $length)) . '...';
}
return trim();
}
}
$text = '
Текст превью (или прехедер) — это небольшой кусочек текста!
Который «подтягивается» из тела сообщения, и обычно он отображается
под полями с именем отправителя и темой сообщения.
';
echo preview_text($text, 60);
echo preview_text($text, 80);
Результат
Текст превью (или прехедер) — это небольшой кусочек текста!
Текст превью (или прехедер) — это небольшой кусочек текста! Который...
Еще один способ – расставить в текстах разделитель, например <!--more-->
(используется в WorPrees, TinyMCE) и брать текст до него. При этом вся HTML верстка остается нетронутой, но главное чтобы этот разделитель был во всех статьях.
$text = '
Текст превью (или прехедер) — это небольшой кусочек текста!
<!--more-->
Который «подтягивается» из тела сообщения, и обычно он отображается
под полями с именем отправителя и темой сообщения.
';
echo mb_substr($text, 0, mb_strpos($text, '<!--more-->'));
Результат
Текст превью (или прехедер) — это небольшой кусочек текста!