kpnemo Опубликовано 5 Июня 2010 Жалоба Поделиться Опубликовано 5 Июня 2010 RSS - обрезка сообщения Как сделать? Можно обрезать сообщение до ссылок? Или задать количество выводимых символов. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 5 Июня 2010 Жалоба Поделиться Опубликовано 5 Июня 2010 Как сделать? Можно обрезать сообщение до ссылок? Или задать количество выводимых символов.http://phpforum.ru/index.php?showtopic=0&view=findpost&p=435266Чтобы по середине слова не порезало... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 kpnemo Опубликовано 6 Июня 2010 Автор Жалоба Поделиться Опубликовано 6 Июня 2010 (изменено) А куда это надо вставить? И в какое место?Для меня пхп достаточно новая и сложная вещь.Если не затруднит, расжуйте мне пожалуйста. Изменено 6 Июня 2010 пользователем kpnemo Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 6 Июня 2010 Жалоба Поделиться Опубликовано 6 Июня 2010 У меня сейчас нет движка старших версий, посмотреть негде.По логике вещей, новостная лента последних сообщений - это скрипт, запрашивающий в таблице сообщение какое-то число последних по дате, а дальше преобразующий в цикле по строкам таблицы данные в формат РСС. В одной из переменных содержится сам текст сообщения, и самое сложное - это найти нужные строки в чужом коде. Подождем, может кто из владельцев старших версий движка посмотрит у себя и подскажет в каком файле на какой строке какое имя переменной. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 kpnemo Опубликовано 6 Июня 2010 Автор Жалоба Поделиться Опубликовано 6 Июня 2010 Скрипт отвечающий за формирование ленты я выложил в аттач. В принципе запрос к базе я вижу - а вот как туда встроить ваш код, я не совсем понимаю(rssexport.php Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 6 Июня 2010 Жалоба Поделиться Опубликовано 6 Июня 2010 Надо попробовать после строки$topic['post'] = preg_replace( "#\[attachment=(\d+?)\?:[^\]]+?)\]#is", "<a href='".$this->ipsclass->vars['board_url']."/index.php?act=attach&type=post&id=\\1'>".$this->ipsclass->vars['board_url']."/index.php?act=attach&type=post&id=\\1</a>", $topic['post'] );добавить:$topic['post'] = strip_tags(str_replace(array('<br>','<br/>','\n','\r')," ",$topic['post'])); while(stristr($topic['post']," "))$topic['post'] = str_replace(" "," ",$topic['post']); $i = 80; while( substr($topic['post'],$i,1) != " " and $i<strlen($topic['post']) )$i++; $topic['post'] = substr($topic['post'],0,$i)." ...";Вместо цифры "80" можно выбрать другие - это минимальная длина строки текста, длинней которой начинается поиск пробела для обрезки. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 kpnemo Опубликовано 6 Июня 2010 Автор Жалоба Поделиться Опубликовано 6 Июня 2010 Таким способом обрезается сообщение по длине.Но также удаляются изображения и разметка. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 FatCat Опубликовано 6 Июня 2010 Жалоба Поделиться Опубликовано 6 Июня 2010 Если нужно сохранить ХТМЛ-теги, скрипт сильно усложнится. А иначе есть риск обрезать по середине тега, или, еще хуже, отрезать закрывающий тег...Если устроит вариант со свалкой тегов без содержимого в конце, код будет примерно такой (не проверял, набрал с руки):$len = strlen($topic['post']); $anons = ""; $tag = 0; $in_anons = 0; $the_end = 0; for($i=0;$i<$len;$i++) { $char = substr($topic['post'],$i,1); if($char == "<")$tag = 1; if($char == ">")$tag = 0; if( !$tag and $char != ">" ) { $in_anons++; if( $char = " " and $in_anons > 80 // Здесь задаем размер подстроки анонса )$the_end = 1; } if( !$the_end // Не пора обрезать or $tag // Мы внутри тега or $char == ">" // Конец тега )$anons .= $char; } $topic['post'] = $anons." ..."; // Свалка тегов-контейнеров без содержимого улетела в конецУвы, теги IMG (картинки) при этом не обрежутся, и останутся "свалкой" в конце... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
kpnemo
RSS - обрезка сообщения
Как сделать? Можно обрезать сообщение до ссылок? Или задать количество выводимых символов.
Ссылка на комментарий
Поделиться на других сайтах
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.