Напишем свой парсер 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>";
}
Я пользуюсь
Я пользуюсь модулем для Drupal Leech, все делает сам. :)
А я думаю..
.. думаю вот, что если бы выложили такой же код только универсальный, для любых сайтов, было бы вам и нам счастье ! ))
выложили
покупаем лицензию на CMS Satus, там есть это и универсально абсолютно.
Добавить комментарий