RSS на PHP Создание RSS ленты на PHP


RSS для вебмастера.

или как сделать RSS ленту за пять минут

RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами

На многих сайтах можно увидеть кнопки или , что означает, что на этом сайте доступна лента новостей в формате RSS. Читателям сайта такой сервис удобен, поскольку при помощи Rss-агрегаторов, например, Yandex.Lenta или Kanban.ru можно собрать собственную новостную ленту и читать новости с разных сайтов в одном месте или получать их на свой e-mail при помощи сервиса Rss2Email. Подробнее об RSS читайте, например, в Компьтерре.

В этой статье речь пойдет не об использовании RSS-лент и агрегаторов, а о том, как быстро сделать новостную ленту на сайте при помощи программы RSS.PHP и MySql.

Начальные условия

Итак, у вас есть сайт, на котором есть поддержка PHP и работает база данных MySql (кстати, очень распространенное сочетание). Из базы, в которой хранятся тексты вашего блога или анонсы новостей и будем получать данные для нашей ленты. Лента будет строиться динамически, непосредственно при запросе, так что нужен только соответствующий скрипт. Вы можете написать его сами, но можете взять уже готовый здесь >>>

Немного теории

Для начала немного теории. Для нашей ленты будем использовать формат RSS 2.0, для тех кому интересно, направляю к описанию формата, который вы найдете здесь>>> . А мы будем использовать не все элементы, а только те, без которых действительно не обойтись:

Web Press

Статьи Вебмастеру

Web Press

RSS-лента с помощью PHP

Категория

Введение

RSS-лента представляет собой XML документ, основная задача которого публикация новой информации. Для чтения RSS существуют специальные программы, которые могут собирать информацию с разных источников, сортировать, фильтровать, приводить ее в удобочитаемый вид.

Наличие RSS-ленты предоставляет пользователю краткую версию публикаций ресурса, экономя его время и трафик. В статье будет рассмотрен пример генерации RSS-ленты с помощью PHP скрипта.


Структура RSS документа

RSS-документ можно разделить на две логические части:

  • Общая информация о ресурсе (заголовок, ссылка на сайт, краткая информация, дата обновления ленты, авторские права, логотип ресурса и т.д.)
  • Элементы ресурса: новости, статьи, рецензии и др. Элементы размещаются в теге item.

Создание RSS-ленты с помощью PHP

При создании RSS-ленты учитывайте, что даты должны соответствовать стандарту RFC 822, к примеру, [Thu, 26 Jul 2012 11:44:17 GMT]. Далее приведены два примера: первый преобразует, второй получает дату в стандарте RFC 822:

Преобразование даты формата MySQL (2011-12-04 14:18:09) к стандарту RFC 822.

Вместо GTM можно подставить временную зону: Москва +0300; Екатеринбург +0500; Иркутск +0800: и др.

Текущая дата в формате RFC 822:

Как создать RSS ленту на PHP

С.Трофимов 17.10.2014, 09:48

Как создать rss ленту
Помогите пожалуйста разобраться как написать rss ленту php поддерживается. Возможно лучше каким.

Как вставить новостную ленту (rss) в html?
Попробовала такой вариант: но ничего не получилось.. выдает ошибку. я так понимаю, что.

Rss персер на php подскажите как доработать
Здравствуйте уважаемые пользователи! Долго искал хороший персер, и все таки надеюсь нашел, но он.

Не могу сделать RSS ленту
Делаю RSS подписку 5

17.10.2014, 10:53 2 17.10.2014, 13:46 [ТС] 3 17.10.2014, 15:28 4

17.10.2014, 23:52 5 20.10.2014, 11:08 [ТС] 6

логи говорят про ошибку 500 и больше ничего, а что значит связана с настройкой .htaccess ? там у меня только редирект прописан и больше ничего, а на данный файл ничего не установлено.

p.s. файл ошибок ругается на 29 строку,[20-Oct-2014 06:53:54 UTC] PHP Parse error: syntax error, unexpected ‘;’ in /home/davinnip/public_html/personaastro.ru/personaastrorss.php on line 29

Добавлено через 6 минут
убрал точку из этой строки, заработало, но выводит в другой кодировке, как это можно исправить?

Добавлено через 8 минут
с кодировкой разобрался, все работает, спасибо.

RSS на PHP: Создание RSS ленты на PHP

Добрый вечер пользователи сайта red-star.pro. В сегодняшнем уроке мы будем создавать свой RSS-канал с помощью PHP и MySQL.

Для начала рассмотрим, что такое RSS и зачем он нужен.

Простой пример RSS-канала:

Ладно, хватит теории, переходим к практике.

Для данного урока нам понадобится MySQL база данных с одной заполненной таблицей.
Итак, начнем.

Шаг 1. Создаем документ

Первым шагом нам нужно создать документ с расширением .php. Я назвал созданный файл rss.php. Данный файл должен быть пустым, не должно быть ни одной строчки кода.

Шаг 2. База данных

В этом шаге нам нужно соединение с базой данных, в которой находится таблица с новостями. Если нет таблицы в БД, то создайте ее. Я вынес соединение в отдельный файл и здесь просто его подключил:

Также мы здесь указываем, что тип файла xml и указываем кодировку.


Шаг 3. Выводим данные из базы

Теперь после подключения к базе пишем код дальше. А дальше мы начинаем писать стандартную конструкцию RSS-канала. Вернее ее первую часть

Теперь берем вторую часть конструкции и вставляем ее в наш код. Но, не просто вставляем, а делаем запрос к БД и вытаскиваем из нее нужные нам строки. А строки, которые нам нужны: id, title, description и date. Выводим все это в цикле do/while.

И в самом конце кода закрываем теги канала.

На этом код RSS-канала закончен. Теперь нам осталось только подключить данный файл к нашей странице. А подключается это очень просто. Между тегами пишем такой код:

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

Чтобы код был более понятен — я выложу исходники файла rss-канала.

На этом данный урок окончен. Спасибо за внимание.

Делаем свой RSS-канал

После серии статей о том, что такое RSS, у многих владельцев сайтов, у которых нет RSS (а таких не так уж и мало, как могут думать некоторые), может возникнуть желание заполучить его себе:-) В этой статье я хочу перечислить способы организации RSS-канала для своего сайта. Начиная с самых простых способов и заканчивая сложными.

Изначально нужно быть уверенным, что вы знаете о том, что RSS-документ – это, по сути своей, обычный файл, в котором специальным образом в виде текста описаны те или иные новости (или статьи). В итоге понятие «у меня (у моего сайта) есть RSS-канал» будет выражаться на практике в виде интернет адреса к этому самому документу (у меня на блоге это, к примеру, адрес: http://feeds.feedburner.com/devezoterik). Ваши же читатели, имея этот адрес, в дальнейшем смогут следить за изменениями в этом файле с помощью специальных программ.

Использование сторонних сервисов (блогов)

Способ, пожалуй, один из самых простых (не требует специальных знаний в области программирования, денежных затрат и т.д.), но при этом, как не парадоксально, он не плох. Можно использовать бесплатные сервисы, предоставляющие возможность вести свои блоги. Блоги или по-русски говоря «дневники», это чаще всего что-то вроде специфических домашних страниц (здесь можно более подробно об этом прочесть) :). Во-первых, на всех таких серверах вам выдают ссылку на RSS-документ (RSS-канал) вашего блога. Во-вторых, блоги имеют именно новостную структуру, т.к. все ваши записи в блоге идут последовательно, и каждая из них привязана к какой-либо дате, а это как раз то, что нам нужно.

То есть идея в том, что где бы вы не содержали свой сайт, вы можете параллельно поддерживать на другом сайте (сервисе, о них чуть позже) актуальную новостную ленту. На своем же сайте вы можете указать ссылку на RSS-документ, которой смогут воспользоваться посетители, желающие следить за вашими новостями.

Подобных сервисов для ведения своих блогов предостаточное количество в интернете. Одни из самых популярных и надежных это: www.blogger.com, my.ya.ru и livejournal.com (но вообще их просто несметное количество, отличающихся обычно немногим). На каждом из указанных мной сервисов есть русская версия с подробной помощью, описывающей, как «завести» свой блог.

Использование сервисов генерации RSS из обычных страниц

Этот способ так же не требует навыков программирования и подходит в первую очередь людям, которые имеют свой сайт и имеют на нем некую страницу новостей, которые они могут обновлять тем или иным способом, но, тем не менее, не имеют на этом сайте RSS-канала.

Конечно, можно воспользоваться первым способом: создать где-нибудь блог и дублировать в него новости со своего сайта (обычно это те новости, которые выводят на первой странице сайта). Но тогда ведь постоянно придется дублировать новости с сайта на блог… Предлагаемый же способ дает альтернативу для более прогрессивных/ленивых (иногда грань между этими понятиями бывает мала :)) владельцев сайта.


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

Создание RSS-документа вручную

Если по каким-либо причинам вы не хотите, чтоб RSS-документ обитал вне вашего сайта, и при этом вы не программист, остается еще один способ: создавать и обновлять этот документ у себя на сайте вручную (здесь уже понадобится опыт работы с html). В случае использования хостинга без поддержки скриптов и при не слишком частом появлении новостей (иначе вся эта затея будет очень утомительной), это вполне востребованный вариант.

Для создания и редактирования такого файла лучше всего использовать редактор Notepad++ или любой другой редактор, поддерживающий работу с кодировкой UTF-8 (без BOM). Документ должен быть в кодировке UTF-8 (без BOM). Вот пример того, как может выглядеть RSS-документ внутри (пример снабжен комментариями):

Сохранять такой файл в большинстве случаев лучше под именем «rss.xml». Имя rss уже как традиция, но можно использовать и любое другое имя, а расширение xml просто желательно (в этой статье я не способен оговорить и объяснить всех деталей, так как тогда она была бы явно слишком большой :)).

Автоматическая генерация RSS-документа на своем сервере

Этот способ подходит уже только для более искушенных веб-программированием людей. Если информация на сайте хранится в базе данных, а сами страницы являются серверными скриптами (а ля PHP), тогда становится возможным использовать самый автономный и не обременяющий в дальнейшем способ – создавать в автоматическом режиме RSS-документ при запросе оного пользователями. Описывать, как создать подобный скрипт, не имеет смысла, так как уже есть достаточно статей на эту тему с готовыми примерами и разъяснениям к ним. Вот одни из них (для языка PHP): ссылка 1, ссылка 2, ссылка 3, ссылка 4, ссылка 5.

Скромный посредник — Feedburner

И вот у вас, наконец, есть желанный адрес своей RSS-ленты. Казалось бы, чего еще можно желать? Конечно же, подробной статистики. Именно для этого и был создан сервис feedburner. Он позволит вам получать максимально возможную статистику, такую, например, как: количество подписчиков, распределение подписчиков по странам, степень интереса подписчиков к тем или иным новостям, возможность получать ваши RSS-новости по e-mail и т.д.

Основной принцип работы feedburner`а заключается в том, что он является посредником между вашим RSS-документом и читателями. Вы указываете feedburner`у адрес своей RSS-ленты, после чего feedburner сможет отдавать эту ленту уже из другого адреса (адрес будет таким: http://feeds.feedburner.com/ + имя вашей RSS-ленты). И если пользователи будут подписываться именно на адрес от feedburner`а, вы сможете в полной мере использовать все функции данного сервиса. При этом нужно помнить, что если кто-то подпишется на настоящий адрес вашего канала, вы не сможете получить прелести использования feedburner`а.

Эта схема поможет придать больше наглядности вышеописанному:

О настройках feedburner можно прочесть здесь. А так же здесь, здесь и здесь.

На самом деле, помимо всего прочего, этот сервис несет в себе еще один плюс. Так как все подписчики будут подписываться на RSS-ленту, находящуюся на feedburner, то вы можете, когда захотите, поменять адрес оригинального источника RSS-ленты (например, пробуя со временем разные способы создания RSS, описанные в этой статье, или, может, вы смените адрес сайта), не потеряв при этом всех своих подписчиков (они всегда будут видеть адрес ленты на feedburner, не подозревая о изменении ваших настроек). Если же люди подписывались бы на оригинальный адрес RSS-документа (без посредника в виде feedburner), то при его смене (вами) они перестанут получать новости, так как документа по старому адресу не будет существовать.

Fonclub`s blog

Для одного проекта появилась задача — читать ленты rss, для последующего постинга статей из этих лент. Погуглил, посмотрел свои старые работы — нашел много интересных решений, в том числе и с помощью функии simplexml_load_file , но все не подходило по ряду причин. Тот же simplexml_load_file не все rss ленты читает, проблема у него с кодировкой windows-1251, на некоторых сайтах. Потому и пришлось искать другие варианты.

В итоге была найдена библиотека, состоящая из нескольких функций для чтения и разбора rss лент. Всю библиотеку мне не нужно было использовать, потому я оставил только 2 необходимые функции, немного подправил под себя и все работает отлично!

Как видно по коду, функция RSS_Tags возвращает нам заголовок, ссылку, дату публикации и краткое описание конкретной записи, а функция RSS_Read проходит по ленте в цикле, выбирает все записи, вызывает функцию RSS_Tags для каждой записи, записывает ответ в массив $RSS_Content и отдает его нам! Все просто �� А ниже пример использования этой библиотеки:

А далее уже можно использовать полученные записи по своему усмотрению.


PHPDesigner

Вы здесь: Главная » PHP » Парсинг RSS ленты на PHP

Парсинг RSS ленты на PHP

RSS — вид XML-формата, предназначенных для описания лент новостей, анонсов статей. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде. Для этого делают программы-агрегаторы.

Сказать по другому: RSS — это специфически структурированный XML документ. Если в RSS есть открывающий тег, то должен быть и закрывающий (например: Заголовок ). Нам нужно получить информацию заключенную между тегами. Любая RSS лента имеет заголовок заключенный между тегами и сам текст статьи заключенный между тегами , именно нам они и нужны.

Простой пример RSS ленты:

В данном примере, будем рассматривать парсинг RSS ленты с помощью SimpleXML.

SimpleXML – это расширение для PHP5 устанавливаемое в него по умолчанию, представляет самый простой и элегантный способ обработки XML (а значит и RSS) файлов. Это и наиболее предпочтительный способ, но он стал доступным только в 5 версии PHP. Это, наверно, самой простой способ пропарсить XML.

Вот пример парсера RSS с использование SimpleXML:

В переменную $url записываем адрес фида RSS. Весь полученный документ сохраняется в переменной $rss. Теперь остается обойти все нужные нам элементы ( в примере обход делается по chanel, а из него в item) и вывести их на экран.

Для большей практики, можно записывать полученную информацию сразу в БД. А при повторном проходе файла, сравнивая даты публикаций, записывать только то, чего у нас нет.

Вот такой несложный пример. Таким образом, зная структуру, можно парсить любой XML документ.

Парсинг RSS-лент и других XML-файлов на PHP

Зачастую нам приходится работать с большими объемами данных, такими как новости, товары и другая немаловажная информация.

В некоторых случаях лучше всего часть работы отдать скриптам, например – парсинг и представление этих данных на вашем сайте.

Сегодня мы подробно рассмотрим, как осуществить парсинг RSS-ленты и по аналогии – XML-файлов типа прайсов и других.

Итак, предположим, что вы нашли сайт, который предоставляет RSS-ленту в таком формате:


Что мы здесь видим? Это блок информации о ленте и два материала, заключенных в теге «item».

Давайте теперь постараемся получить все необходимые нам данные.

Поскольку основная наша идея – это сформировать свою ленту новостей на основе полученных данных, для начала мы получим информацию о текущей ленте.

Во всем примере мы будем использовать «SimpleXML», помогающий без особого труда обрабатывать XML-файлы.

Тогда код для получения основной информации о ленте будет выглядеть следующим образом:

Здесь мы получаем ссылку на источник, заголовок ленты и ее описание, и на примере описания – выводим его на странице.

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

Так, с основной информацией разобрались, теперь самое интересное – парсинг материалов.

В отличие от основной информации, материалов может быть несколько, и для того, чтобы получить их все – мы будем использовать цикл «foreach».

И получение уже самих материалов на примере нашей RSS-ленты будет выглядеть следующим образом:

На выходе вы получите примерно такую картину:

Если у вас это не произошло – пишите об этом в комментариях.

По такому принципу парсятся все XML-файлы, меняется лишь их структура. Если в вашем файле присутствуют параметры в тегах и вы не знаете, как их получить – рекомендуем почитать эту статью.

RSS на PHP

В этом небольшом уроке мы будем создавать свою собственную RSS ленту средствами PHP. С помощью этой ленты можно облегчить себе и окружающим поисковым роботам жизнь. Все файлы будут браться из базы данных и превращаться в список с пунктами.
В предыдущей статье вывод новостей RSS с помощью PHP мы уже показывали взаимодействия с лентой.
На текущий момент самая актуальная версия RSS является версией 2.0, на это и будем опираться. Пример готового решения можно увидеть, посмотрев на наш rss поток. Давайте рассмотрим исходный код xml файла:

При этом свойств одного материала очень много, все данные предоставлены ниже.

Обязательные элементы channel:
title — название rss потока.
description — небольшое описание проекта.
link — прямая ссылка на главную страницу канала.

Необязательные элементы channel:
language — язык канала. Большинство современных ретрансляторов автоматический определяют данный элемент.
copyright — авторский копирайт.
managingEditor — email пользователя, который отвечает за данный канал.
webMaster — email технической поддержки по данной ленте.
pubDate — дата создания канала (RFC 822).
lastBuildDate — время последнего изменения (RFC 822).
category — как понятно из названия категория канала (можно указать несколько).
generator — программа с помощью, которой вы создали ленту.
docs — документы по использованию вашего канала.
ttl — time to live определяет через какой промежуток времени лента потеряет актуальность.
image — изображение отвечающее за \»дизайн\» ленты.
skipHours — количество часов запрещающее ридерам проверят ленту.
skipDays — количество дней запрещающее ридерам проверят ленту.


Обязательные элементы item:
title — имя новости или сообщения.
description — небольшое описание item.
link — ссылка на страницу с полным описанием.

Необязательные элементы item:
author — email автора.
category — категория item
comments — ссылку на страницу, где можно обсудить новость.
enclosure — Медиа-объект который бил прикреплён к новости.
guid — уникальный текст которые не вкоем случае не должен повторяться (можно использовать ссылку на страницу или ID новости).
pubDate — дата создания item (RFC 822).

После того как вы узнали, какие параметры вам необходимы приступим к созданию самой ленты. Для этого создадим в главной директории файл rss.php и запишем в него следующий текст

Теперь необходимо зайти в свою базу данных, используя phpmyadmin или другой клиент, и посмотреть заголовки таблицы, которая отвечает за вывод материалов с сайта. После чего, отредактировать rss.php. Как только вы закончите работу, и у вас будет полностью рабочая лента, её необходимо подключить к проекту, для этого нужно открыть исходный код и в раздел head написать следующий текст:

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

RSS из любого сайта средствами PHP

Здравствуйте, хабра-сообщество! В своём первом посте хотелось бы затронуть тему сбора данных с любого сайта, и формирования из них лент RSS.

Предисловие
Варианты

Я стал искать решения, для того чтобы побороть эту проблему. И они находились: Feed43, feedfire.com, но по тем или иным соображениям они мне не подходили. Уж больно ленты специфичные мне потребовались.

Задача

Выдернуть новости с этого сайта и с этого форума (на момент, когда я писал этот код, на форуме не было RSS-подписки на темы).
Сложность первого сайта в том, что там нет семантики, и какого то отделения новостей. Новости — на нём текст сплошняком. А второго как раз наоборот, в сложности и излишних данных. Я расчехлил шашечки и ринулся писать код.

Решение

Я решил совместить два способа для поиска и отделения новостей:

  1. использование CSS-синтаксиса для поиска элементов
  2. использование регулярных выражений для дополнительной фильтрации

Вот что собственно из этого вышло (просьба сильно не придираться, код был написан очень быстро, буквально на коленке):

Класс CHTML2RSS (файл CHTML2RSS.class.php):

params = $params; > // загружаем страницу и немного обрабатываем function getDocument($url) < $cnt = $this->params[‘charset’] ? ‘ params[‘charset’].'»>’ : »; $cnt.=file_get_contents($url); $cnt = preg_replace(‘/(?s)

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Илон Маск рекомендует:  Настройка faq по php
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL