Скрипт на PHP для вывода на сайте RSS 2.0 - новостей

Для пополнения сайта уникальным контентом можно использовать RSS-ленты других сайтов (например, новостных). Это понравиться как поисковым машинам, так и посетителям сайта.
Основной особенностью этого скрипта является использование регулярных выражений, то есть работа скрипта обходиться без DOM-функций. Для вывода будем использовать лишь заголовки, ссылки на публикации и краткие описания публикаций новостной ленты.
Для того чтобы не запрашивать все время данные RSS-канала, будем их кэшировать. Поэтому для каталога, где будет сохраняться кэш-файл, нужно будет установить права доступа 777.
Для нормальной работы скрипта нужен PHP не ниже версии 4.3.

 

Описание: Скрипт на PHP для вывода на сайте RSS - новостей
Скачать Размер: 1.61 KB. Количество скачиваний: 2563

 

Обновление 17.12.2010г. Новая версия скрипта. Для правильной работы нужен PHP версии 5.1. Что нового?
1. Добавлен вывод даты новостей ленты
2. Добавлен вывод рисунка канала
3. Скрипт при необходимости преобразует кодировку полученных данных ленты из windows-1251 в кодировку utf-8. Если вам не нужно преобразование (сайт у вас в кодировке windows-1251) или нужно наоборот преобразовать данные из utf-8 в windows-1251, то можно немного подредактировать скрипт (комментарии в скрипте есть, сможете самостоятельно отредактировать).

 

Скрипт доработан с помощью владельца сайта мировыеновости.рф

 

Описание: Скрипт на PHP для вывода на сайте RSS 2.0 - новостей. Версия v2
Скачать Размер: 2 KB. Количество скачиваний: 995

 

Пример использования RSS-скрипта

 

Код
<?php

include_once("write_rss.php");//подключаем файл с функцией вывода RSS-новостей

//адресс новостей (URL-адрес RSS потока)
$url_rss="http://www.linedmk.com/rss.php";

//количество выводимых новостей
$kol_print_news=10;
//имя файла для хранения RSS-новостей на локальном сервере (то есть кэш-файл)
$file_rss="cache_rss.xml";
//время обновления, в часах
$hclock=1;

print_rss($url_rss,$file_rss,$hclock,$kol_print_news);//вызываем функцию вывода RSS-новостей

?>

Опубликовано 22 июня 2009 г.
Сайт CMS boxcode.ru представляет
Новая версия скрипта доски объявлений с Яндекс Картами.
Новые возможности: интегрировано несколько систем оплат (в том числе есть и СМС-оплата), мультивалютность, RSS-лента объявлений, сортировка по цене и дате добавления, новый дизайн.
Комментарии к публикации
Всего комментариев: 73
прохожий: Гость | 05.11.2009, 14:23 #
Попробуем
прохожий: mius | 14.12.2009, 17:51 #
сайт: recmap.ru
Спасибо. Легенький и простой скрипт. Многие жмутся ведь из-за такого.
прохожий: Гость | 10.01.2010, 21:53 #
неплохо было бы вынести переменную показывать ли описание или нет. Также добавить дату и время
прохожий: Гость | 31.01.2010, 21:04 #
kak v skripte meniat kodirovku . mne nuzna kodirovka utf -8 ?
прохожий: mius | 10.02.2010, 18:45 #
сайт: recmap.ru
Насколько я помню, кодировка зависит от поставщика ленты и кодировки страницы, на которой этот скрипт используется. Сам скрипт к коду не привязан.
прохожий: zherenovsky | 08.05.2010, 00:53 #
сайт: ru-fura.ru
работает скрипт. автору респект и уважуха!!!
пользователь: | 20.05.2010, 22:04 #
Спасибо. Интересный парсер. Правда требовалось немного изменить и доработать.
прохожий: seo-cook | 26.10.2010, 16:53 #
сайт: seo-cook.ru
а как доработал, где-нибудь скачать можно?
прохожий: Москва | 20.05.2010, 22:07 #
сайт: www.aqula.ru
Не хватает даты и времени А также названия источника.
прохожий: Дима | 07.06.2010, 11:39 #
Где взять write_rss.php
Суперадмин: | 08.06.2010, 23:17 #
E-mail: написать сообщение
Странный вопрос! В архиве, конечно, который можно бесплатно скачать по вышеприведенной ссылке.
прохожий: Наталья | 30.06.2010, 18:20 #
установила скрипт. Все классно выводило первый час, после этого новости пропали.
Атрибуты папки и файлов правильные. В чем ошибка?
Суперадмин: | 01.07.2010, 22:50 #
E-mail: написать сообщение
Я не ясновидящий! ;))
прохожий: Гость | 07.07.2010, 15:04 #
Наталья, этот скрипт по умолчанию обновляется каждый час.

В файле write_rss.php есть строчка " if (filemtime($file_rss) + $hclock*60*60 < time()) "

я поменял $hclock*60*60 на $hclock*60*, благодаря чему обновляться стало чаще, вожможно вам это поможет.
прохожий: Дмитрий | 28.07.2010, 16:38 #
сайт: it-tavern.ru
У кого появляются проблемы с кодировкой, исправляем вот так:

$t=iconv("Windows-1251","UTF-8",$t);
echo ($t);
прохожий: mod | 24.09.2010, 16:11 #
У меня скрипт не выполняется :(
chmod выставил, каталоги и файлы правильно прописаны. В кэш ничего не записывается. В исходном коде скрипт вырезается о_О Может хостер блокирует?
Суперадмин: | 27.09.2010, 21:41 #
E-mail: написать сообщение
Как это "В исходном коде скрипт вырезается"?
прохожий: mod | 28.09.2010, 14:15 #
Ну вот например я вставил скрипт в шаблон (инклюдом), обновляю страницу сайта, вижу что часть сайта не загрузилась, открываю исходный код страницы и вижу, что весь код после иклюда, пропал, т.е. не загрузилось.
Суперадмин: | 01.10.2010, 12:53 #
E-mail: написать сообщение
Скорее всего у вас происходит фатальная ошибка, при которой работа скрипта полностью прекращается. И также у вас похоже отключены сообщения об ошибках, поэтому ничего больше не выводится. Включите сообщения об ошибках PHP, и увидите, в чем причина.
прохожий: mod | 04.10.2010, 13:29 #
Странно. Брал скрипт, ничего не изменял, вставлял в голую хтмл страницу, и тоже не работало.
прохожий: mod | 04.10.2010, 13:38 #
Проблема частично решилась! Дело было в "htaccess", и с строке "RewriteEngine On". Теперь нужно прописать исключение для этого скрипта.

Спасибо за ответы!
прохожий: mod | 26.10.2010, 19:41 #
...и что-то не получается исключение сделать :(
прохожий: Glok | 07.11.2010, 09:50 #
Скрипт работает, подскажите только на картинки сделать, чтобы выводились?
Суперадмин: | 07.11.2010, 12:28 #
E-mail: написать сообщение
Изучаем Спецификацию RSS 2.0 (к примеру на сайте http://beshenov.ru/rss2.html), и переделываем скрипт для вывода картинок.
прохожий: Гость | 15.11.2010, 22:08 #
сайт: www.rbk2.ru
Можно мануал по установке?(((
Куда пхп файл заливать?Где папку для файла - кэш создать?
У меня сайт на движке.
прохожий: Гость | 15.11.2010, 22:09 #
сайт: www.rbk2.ru
А то мыкаюсь, блин мыкаюсь, нигде не могу найти модуль подходящий...
А это походу штучка что надо как раз ))
Суперадмин: | 01.12.2010, 14:51 #
E-mail: написать сообщение
В статье и так все написано, надо сделать как в приведенном коде.
прохожий: Гость | 12.12.2010, 13:42 #
Спасибо за скрипт! Хорошая идея с кэшем.

Но у меня не получается запустить любой пакет из google reader. Вы не пробовали тестить ленты ридера?
Суперадмин: | 12.12.2010, 19:14 #
E-mail: написать сообщение
нет, не пробовал.
прохожий: Гость | 13.12.2010, 18:04 #
А будите пробовать?
Суперадмин: | 13.12.2010, 19:04 #
E-mail: написать сообщение
Нет, не хочется :)
прохожий: ZAVcom | 16.12.2010, 06:32 #
сайт: cooldata.ru/
если бы еще при это был реализован вывод картинок к новостям
можете помочь?
прохожий: Гость | 17.12.2010, 00:07 #
а как вывести дату новости? в скрипте вроде все есть для этого но не пойму. нету и все. Может есть кака нибудь подсказка?
Суперадмин: | 17.12.2010, 13:36 #
E-mail: написать сообщение
Скачайте новую версию, в ней реализован вывод даты.
прохожий: Гость | 17.12.2010, 16:11 #
Я имею ввиду вывод даты в моих новостях, к примеру я хочу отправлять в качестве новости новое объявление, зоголовок , содержание ну и ДАТУ размещения.
прохожий: Гость | 18.12.2010, 11:41 #
Странно. В мозилле не выводит дату. А в интернет эксплорере выводит. Разные браузеры по разному выводят содержимое сайта?
Суперадмин: | 21.12.2010, 09:50 #
E-mail: написать сообщение
В самом деле странно. У меня в мозилле все нормально отображается - дату выводит.
прохожий: Евгений | 23.12.2010, 15:16 #
Для меня это тоже странно. На моем сайте (мировыеновости.рф) все выводит в том числе и даты, немного доработал что теперь картинки выдает вместе с новостью, дальше идея есть внедрить флеш проигрыватель, т.к. на некоторых новостях есть видео ролики.
прохожий: Алекс | 23.01.2011, 13:46 #
Помогите, вывод работает нормуль, но картинок нет.Что может быть, подскажите
Суперадмин: | 24.01.2011, 22:37 #
E-mail: написать сообщение
Картинки еще должны быть в потоке RSS. Не каждый сайт дает эту картинку.
прохожий: Гость | 30.01.2011, 18:27 #
Если я хочу на разных страницах сайта выводить разные новости
к примеру:

на 1-странице новости туризма:
указываю адрес
//адресс новостей (URL-адрес RSS потока)
$url_rss="http://news.yandex.ru/travels.rss";

на 2-странице новости происшествий
указываю адрес

//адресс новостей (URL-адрес RSS потока)
$url_rss="http://news.yandex.ru/incident.rss";

так вот при открытии этих страниц новости выводятся одинаковые что на 1 странице, что на 2 странице с первого адреса
Открываю эти страницы через некоторое время, выводятся уже новости со второго адреса ,но и на 1 странице и на 2 странице одинаковые
Суперадмин: | 31.01.2011, 11:44 #
E-mail: написать сообщение
Новости кэшируются, и обновляются через определенный промежуток времени. Нужно как-то сделать разделение кэширования.
прохожий: Алексей | 19.03.2011, 15:27 #
Ну так как сделать, чтобы выводились картинки? Внутри скрипта есть переменные которые их обрабатывают да и в кеш xml файле они тоже видны, но из на сайте нет в экплорере, а хроме они есть, но безразмерные плюс ссылка на них битая.
прохожий: Алексей | 19.03.2011, 15:51 #
Короче нашёл решение, как вывести картинки:
Заменить сточку:
$description[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$description[1]);

на
$description[1]=preg_replace("#<\!\[CDATA\[#eis","'\\1'",$description[1]);
$description[1]=preg_replace("#]\]>#eis","'\\1'",$description[1]);

Тогда картинки, которые передаются в дескрипшене станут отображаться.

Хорошего всем дня.
прохожий: Андрей | 08.04.2011, 16:25 #
E-mail: написать сообщение
Спасибо за замечательное решение!
Особенно понравился по доступности второй вариант.
прохожий: Алексей | 10.04.2011, 18:04 #
Появилась ошибка работе скрипта:Вот она
Notice: Undefined offset: 1 in /home/h28192/data/www/torgploshad.com.ua/write_rss.php on line 72

Notice: Undefined offset: 1 in /home/h28192/data/www/torgploshad.com.ua/write_rss.php on line 72
прохожий: Alex | 14.04.2011, 15:18 #
а как сделать так, что бы выводился только заголовок и картинка?
Суперадмин: | 14.04.2011, 21:07 #
E-mail: написать сообщение
Отредактируйте скрипт.
прохожий: Alex | 14.04.2011, 22:07 #
Пробовал, не получается (
Суперадмин: | 14.04.2011, 22:46 #
E-mail: написать сообщение
Про какой спрашиваете, их два варианта на странице?
прохожий: Alex | 15.04.2011, 19:44 #
E-mail: написать сообщение
про тот, который "write rss.php"
Суперадмин: | 16.04.2011, 20:36 #
E-mail: написать сообщение
Описание находится в переменной $description. Удаляем или комментируем строки содержащие данную переменную:
$d_is=preg_match("#<description>(.*?)</description>#is",$one_item,$description);
$description[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$description[1]);

Редактируем строчку:
$t.="<div><a href='".$link[1]."' target='_blank'>".$title[1]."</a> <br>".$description[1]."</div>";

Следующим образом:
$t.="<div><a href='".$link[1]."' target='_blank'>".$title[1]."</a></div>";
прохожий: Alex | 17.04.2011, 00:03 #
Ну а картинка то не отображается тогда. Она ведь в поле $description находится, а получается мы полностью закоментировали ее. Хотя у меня та же картинка есть еще в поле <enclosure url="....." length="*" type="image/png" /> Может ее можно вытащить из этого поля?
прохожий: Alex | 17.04.2011, 18:21 #
Спасибо, разобрался. Только кодировка текста осталась непонятная ((
Русские буквы иероглифами пишет ((
Суперадмин: | 17.04.2011, 19:58 #
E-mail: написать сообщение
С помощью регулярных выражений вытаскивали url изображения? И какая кодировка у вас? Если с помощью регулярных выражений, то нужно добавить модификатор u для указания работы с многобайтовыми кодировками. Например:

$d_is=preg_match("#<description>(.*?)</description>#isu",$one_item,$description);

А также надо указать кодировку PHP в самом начале скрипта. Для кодировки utf-8:

setlocale(LC_ALL,"utf-8");
mb_internal_encoding('UTF-8');

пользователь: | 17.04.2011, 21:33 #
не помогло ((
вот сама лента: http://shop.lovethismusic.ru/rss/
Суперадмин: | 17.04.2011, 22:18 #
E-mail: написать сообщение
Кодировка сайта у вас какая? Может она отличается от utf-8?
пользователь: | 18.04.2011, 20:19 #
нет, не отличается. в эксплорере нормально отображается...
Суперадмин: | 18.04.2011, 21:35 #
E-mail: написать сообщение
Функции для работы с текстом использовали, вроде substr()? Если да, то нужно использовать специальные функции для работы с многобайтовыми кодировками, то есть вида mb_substr(). Так же в PHP должна быть библиотека для работы с многобайтовыми кодировками.
пользователь: | 18.04.2011, 22:17 #
извиняюсь, сайт в "windows-1251" кодировке. Но опять же менять не могу ((
Как же сам скрипт перекодировать в мою кодировку?
пользователь: | 18.04.2011, 22:26 #
все, получилось. Спасибо! Вот так сделал:

if (preg_match('/<?xml[^>]+encoding[\s]*=[\s]*("|\')utf-8("|\')[^>]+?>/i', $text_rss))
{

$text_rss = iconv("utf-8", "cp1251", $text_rss);
file_put_contents($file_rss, $text_rss);//пишем данные обратно в файл

}
Суперадмин: | 18.04.2011, 22:56 #
E-mail: написать сообщение
Вообще-то для варианта, при котором кодировки сайта и RSS-ленты отличаются есть второй вариант скрипта, расположенный чуть ниже ;) Немного подредактировать под свои требования и все! :)
пользователь: | 19.04.2011, 21:45 #
и снова здравствуйте! :)
Последний вопрос по поводу стилей. Можно ли отредактировать стили получившегося блока. Именно не самого айфрейма, а текста внутри. Можно, например, отредактировать линки типа (a, a:visited) ?
Суперадмин: | 20.04.2011, 20:59 #
E-mail: написать сообщение
Ну вы и так ответили на свой вопрос ;) С помощью стилей и можно изменить внешний вид. Нужно поместить выводимые RSS-ки в блок div с названием класса, например box_import_rss и в стилях прописать

.box_import_rss a { тут свойства }
.box_import_rss a:visited { тут свойства }
пользователь: | 21.04.2011, 22:19 #
вот именно, что стили типа "бэкграунд" можно задать а сам шрифт и цвет линки - нет.. Он извлекает свойства div из скрипта. А как прописать стиль в самом php - непойму ((
Суперадмин: | 22.04.2011, 21:17 #
E-mail: написать сообщение
В скрипте извлекающем данные из RSS должна быть строчка:

$t.="<div><a href='".$link[1]."' target='_blank'>".$title[1]."</a> <br>".$description[1]."</div>";

в эту строчку можно добавить класс CSS для ссылки, например добавим класс my_style_class:

$t.="<div><a href='".$link[1]."' target='_blank' class='my_style_class' >".$title[1]."</a> <br>".$description[1]."</div>";
пользователь: | 24.04.2011, 14:33 #
не пойму что же я неправильно делаю - прописал стиль в <head> .adver {font-family: bla bla bla}
в теге div прописую в class='adver' - и результат 0
что неправильно?
Суперадмин: | 24.04.2011, 21:16 #
E-mail: написать сообщение
Вы так и пишите
<head>
.adver{...}
??
Вообще-то нужно в теге <style>
<head>
...
<style type="text/css">
.adver{}
</style>
...
</head>

Также нужно не забывать от приоритете стилей. И записать так
div a.adver { ... }

Подробнее об приоритете стилей смотрите
http://design-praktik.com/2009/08/01/prioritet-css-stilej/
прохожий: Ивван | 20.04.2011, 16:30 #
сайт: domsovets.ru/
Не знаю как у остальных, но у меня получилось сразу! Спасибо, буду пользоваться. Побольше бы таких статей!
прохожий: pric | 22.12.2011, 06:25 #
сайт: pr-ic.ru
У меня тожке сразу заработало, пользуюсь
прохожий: Тарас | 30.06.2011, 17:35 #
сайт: sitear.ru
Вот это дела, 5 минут дела и у меня есть RSS лента, скрипт работает как швейцарские часы... Доволен!!!
прохожий: Ден | 02.01.2012, 18:15 #
сайт: site.ru
Приветствую! Скрипт работает, и выводит заголовок и текст + лого
Но не выводит прикреплённые Медиа файлы.
Подскажите как вывести...
Вот пример
http://www.strana.co.il/export/all.xml
прохожий: chajka | 25.01.2012, 20:20 #
E-mail: написать сообщение
Ура! Получилось! Замучилась с кодировкой - все сделала как написано - и все равно кракозябры. А оказывается кеш не поменялся. ))) Прошел час и все ок )) Спасибо огромное - столько перепробовала скриптов. Ваш - лучший.
Вход в аккаунт
Новости сайта
  • 13.09.2011
    Создание современных сайтов не обходится без программирования, и на наш сайт www.linedmk.com так же освещает вопросы связанные с программированием на JavaScript и PHP. И поэтому мы поздравляем и вас и себя с этим праздником! :)
  • 19.07.2011
    В скрипте доски объявлений boxcode.ru разработан функционал для приема платежей с помощью систем smscoin.com и www.webmoney.ru. Также можно одновременно использовать несколько платежных систем, при этом пользователи могут выбрать удобный для себя способ оплаты.
  • 11.07.2011
    В новой версии скрипта доски объявлений cms boxcode.ru реализованы новые долгожданные функции: мультивалютность, RSS-лента объявлений, сортировка объявлений по дате и цене. Есть и очень приятное новшество...
  • 02.05.2011
    Разработан функционал для доски объявлений на CMS boxcode.ru для работы с Яндекс картами.
  • 22.03.2011
    Разработана новая версия доски бесплатных объявлений с СМС-оплатой.