Парсим RSS Ленту. Инструкция для новичков.

Напишем свой парсер RSS для drupal?

Довольно часто может встать вопрос ребром о том, как парсить чей нибудь RSS поток ?
RSS – это семейство XML-форматов

Парсить в данном случае является синонимом разбить на части. Тоесть нам необходимо разбить интересующую нас ленту на части.

Для этого нам можно использовать следуший код (код помог дописать владелец Трогательной СЕОРЕПЫ – nekto )

$url = "http://адрес-того-чтопарсим/rssf.php"; // присваиваем переменной урл адрес фида, который будем парсить
$xml = xml_parser_create(); // создаем парсер xml
xml_parser_set_option($xml, XML_OPTION_SKIP_WHITE,1); устанавливают опцию что могут быть пробелы
xml_parse_into_struct($xml, file_get_contents($url), $ELEM, $FREQ); парсит хмл документ в массив Элементов и массив заголовков file_get_contents($url) - берет контент с указанного урла (или файла с сервера)ю
xml_parser_free($xml); закрывает парсер.

после этого в массивах ELEM -- хуева туча элементов!!!.. а в массиве FREQ описание типов этих элементов!!!!

Собственно вот это сверху написано и является парсером -). Ведь тут мы все разбили на части.
Сомневающиеся могут попробовать сделать вывод

print_r($FREQ);
print_r($ELEM); 

и увидят что все уже «распарсено».


Что делать с этим парсером дальше, каждый решает сам:

  • можно сразу выводить через echo, можно запихнуть данные в массив и потом вывести, или в нужном формате записать в файлик, который потом вставлять в свою страничку через include.

  • Из идей к применению…можно к примеру парсить прямой эфир яндекса и составлять БД на бодубии БД Пастухова ;-) для послещующего составления семантических ядер.

  • А можно просто сделать небольную новостную колонку.Снизу приведу пример без комментариев. Скажу лишь что сначала сделать нужно


print_r($FREQ);
print_r($ELEM);

дальше смотрим смещение открывающего тега ITEM open и потом смотрим смещение ИНТЕРЕСУЮЩИХ нас тегов относительно него.. нас к приеру интересует тег ТИТЛЕ а он смещен на 1 позицию.. вот и приписали ( просото у меня пример такой получился что на 1 позицию)

[$A+1]

Данный снизу скрипт выдат пять свежих постов из ленты. Обрежет количество символов поста до 70 штук. Это позволит вставить токие автонаполняемые новости к примеру в новостной блок, вашего сайта или блога.
Это дополнение дописал хороший человек =!DaRKsLAVE!=.
Пользуйтсь на здоровье -) !!!

$linkName = ( "читать.." );

$N = count($FREQ['ITEM']);
for($i=0; $i<10; $i+=2){
$A = $FREQ['ITEM'][$i];
$ppTitle = win2utf( $ELEM[$A+1]['value'] );
$ppLink = $ELEM[$A+2]['value'];
$ppTime = $ELEM[$A+4]['value'];
$ppDesc = win2utf( substr( $ELEM[$A+3]['value'], 0, 70) );

echo "<P><strong>{$ppTitle}</strong> <br>{$ppDesc}<A href='{$ppLink}'>{$linkName}</A>...</P>";

}

Добавить комментарий

Содержимое данного поля является приватным и не предназначено для показа.

Filtered HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type='1 A I'> <li> <dl> <dt> <dd> <h2 id='jump-*'> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.