Напишем свой парсер 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);
и увидят что все уже «распарсено».
Что делать с этим парсером дальше, каждый решает сам:
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>";
}
Последние комментарии
20 часов 6 минут назад
1 день 2 часа назад
2 дня 8 часов назад
2 дня 8 часов назад
2 дня 8 часов назад
2 дня 8 часов назад
2 дня 8 часов назад
2 дня 8 часов назад
2 дня 9 часов назад
2 дня 14 часов назад