|
|
|
| Необходимо вывести небольшое описание для новости например 300 символов, новость как всегда лежит в базе, проблема в том что новость представляет собой не просто текст а кусок html с тегами
какой выход посоветуете? | |
|
|
|
|
|
|
|
для: LexXL
(27.02.2008 в 09:55)
| | Самым простым вариантом было бы зделать в бд отдельное поле для анонса, но трудности нам не почем.
Чтобы вырезать какой-то кусок текста (допустим несколько предложений) можно анализировать текст на символ точку ".", но тут может быть много проблем, например если эта точка завершает сокращенное слово. | |
|
|
|
|
|
|
|
для: ONYX
(27.02.2008 в 10:11)
| | нет, тут точка может стоять в открытом теге например <a> который может быть также вложен в <p> или еще хуже в <table>
придётся писать класс, который парсит вложенность тегов + плавающая длина анонса | |
|
|
|
|
|
|
|
для: LexXL
(27.02.2008 в 09:55)
| | Проще в базе создать отдельное поле для анонса
Либо обрезать текст по пробелу при помощи substr(), вырезав предварительно теги strip_tags();
<?
function cut_str($str, $limit, $delimiter) {
$lenght = $limit;
$str = strip_tags($str);
if ((strlen($str)) >= $lenght) {
$wrap = wordwrap($str, $lenght, "~");
$str_cut = substr($wrap, 0, strpos($wrap, "~"));
$str_cut .= ' '.$delimiter;
return $str_cut;
} else {
$str_cut = $str . ' '.$delimiter;
return $str_cut;
}
}
?>
|
Вызывается примерно так
<?
echo cut_str('строка для обрезания', $limit = 100, $delimiter = '...')
?>
|
| |
|
|
|