Перейти к контенту
  • 0

RSS - обрезка сообщения


Вопрос

Рекомендуемые сообщения

  • 0

Как сделать? Можно обрезать сообщение до ссылок? Или задать количество выводимых символов.

http://phpforum.ru/index.php?showtopic=0&view=findpost&p=435266

Чтобы по середине слова не порезало...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А куда это надо вставить? И в какое место?

Для меня пхп достаточно новая и сложная вещь.

Если не затруднит, расжуйте мне пожалуйста. :rolleyes:

Изменено пользователем kpnemo
Ссылка на комментарий
Поделиться на других сайтах

  • 0

У меня сейчас нет движка старших версий, посмотреть негде.

По логике вещей, новостная лента последних сообщений - это скрипт, запрашивающий в таблице сообщение какое-то число последних по дате, а дальше преобразующий в цикле по строкам таблицы данные в формат РСС. В одной из переменных содержится сам текст сообщения, и самое сложное - это найти нужные строки в чужом коде. Подождем, может кто из владельцев старших версий движка посмотрит у себя и подскажет в каком файле на какой строке какое имя переменной.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Скрипт отвечающий за формирование ленты я выложил в аттач. В принципе запрос к базе я вижу - а вот как туда встроить ваш код, я не совсем понимаю(

rssexport.php

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Надо попробовать после строки

$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

Если нужно сохранить ХТМЛ-теги, скрипт сильно усложнится. А иначе есть риск обрезать по середине тега, или, еще хуже, отрезать закрывающий тег...

Если устроит вариант со свалкой тегов без содержимого в конце, код будет примерно такой (не проверял, набрал с руки):

$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 (картинки) при этом не обрежутся, и останутся "свалкой" в конце...

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.