Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2011, 22:06   #1
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию Обрезаем текст для статьи

Есть таблица в которой лежит содержимое страницы(вместе с тегами). При выводе статей я обрезаю текст статьи до 200 символов. И так бывает что обрезается часть тега. Что посоветуете?
Abuhamed вне форума Ответить с цитированием
Старый 08.04.2011, 22:14   #2
spbcypher
Пользователь
 
Регистрация: 06.03.2010
Сообщений: 10
По умолчанию

Два варианта на вскидку: strip_tags или выводить целиком, но в фиксированный контейнер с overflow hidden
Ну или как обычно делают, завести поле "краткое описание"
spbcypher вне форума Ответить с цитированием
Старый 08.04.2011, 22:50   #3
dekameron
Форумчанин
 
Аватар для dekameron
 
Регистрация: 27.04.2010
Сообщений: 185
По умолчанию

Гдето в интернете нашел, иногда использую
PHP код:
function breakword_p ($txt,$len,$delim='\s;,.!?:#') { 
    
$txt preg_replace_callback ("#(</?[a-z]+(?:>|\s[^>]*>)|[^<]+)#mi"
                                  
,create_function('$a'
                                                  
,'static $len = '.$len.';'
                                                  
.'$len1 = $len-1;'
                                                  
.'$delim = \''.str_replace("#","\\#",$delim).'\';'
                                                  
.'if ("<" == $a[0]{0}) return $a[0];'
                                                  
.'if ($len<=0) return "";'
                                                  
.'$res = preg_split("#(.{0,$len1}+(?=[$delim]))|(.{0,$len}[^$delim]*)#ms",$a[0],2,PREG_SPLIT_DELIM_CAPTURE);'
                                                  
.'if ($res[1]) { $len -= strlen($res[1])+1; $res = $res[1];}'
                                                  
.'else         { $len -= strlen($res[2]); $res = $res[2];}'
                                                  
.'$res = rtrim($res);/*preg_replace("#[$delim]+$#m","",$res);*/'
                                                  
.'return $res;'
                                  ,
$txt); 
     while (
preg_match("#<([a-z]+)[^>]*>\s*</\\1>#mi",$txt)) { 
         
$txt preg_replace("#<([a-z]+)[^>]*>\s*</\\1>#mi","",$txt); 
     } 
    
$txt preg_replace('/(<img[^<]+>)/Usi'''$txt); 
     return 
nl2br(($txt)); 

Помог - тырк на весы
dekameron вне форума Ответить с цитированием
Старый 10.04.2011, 23:38   #4
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

ну если делается краткое описание то обычно substr(strip_tags(...
подойдет вполне, а обрезка все равно до хорошего не доведет, обычно(редакторы wysiwyg) все куски текста в <p></p> или других тегах оформлены. И если резать текст то в 90% случаев как раз вырезаться будет кусок наподобии "<p>text text text" т.е. без закрывающих тегов, что может привести к поломке шаблона. где-то <p> будет не закрыт, а где-то и таблица вовсе не закроется или ячейка.
iankov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу сделать форму для ввода паролей! Для этого текст должен быть зашифрован в (*****) ! Как сделать vitaaly Visual C++ 2 12.02.2011 12:29
Не выводится текст статьи из БД (PHP,MySQL) Mysqler Помощь студентам 1 19.05.2010 21:26
Статьи по Delphi Alex2009 Свободное общение 0 18.09.2009 16:54
Статьи Sazary Общие вопросы C/C++ 0 16.08.2009 01:37