[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: RSS парсер
panacea
Пытаюсь своять простенький rss парсер. Хочу чтоб выводил дату время и ссылки на новости гугла. Нашел на одном сайтике такой код, но он что то не выдает у меня ничего и файл не создает. Зараза.

<?php

function
print_rss($url_rss,$file_rss,$hclock,$kol_print_news)
{
//$url_rss - URL-адрес RSS потока
//$file_rss - адресс файла для хранения RSS-новостей
//$hclock - время обновления, в часах
//$kol_print_news - количество выводимых новостей



if (!file_exists($file_rss))//если файл не сохраняли, то сохраняем на локальном сервере
{
if (@!copy ($url_rss,$file_rss))
return (false);
}
else
{
//если существует, то проверяем устарел ли файл (не более Х часов назад он записан)
if (filemtime($file_rss) + $hclock*60*60 < time())
{
if (@!copy ($url_rss,$file_rss))
return (false);
}
}



$text_rss=file($file_rss);
$text_rss=implode("",$text_rss);

$mas_item=array();
preg_match_all("#<item>.*?</item>#is",$text_rss,$mas_item);

$t="";
$kol=0;
if (sizeof($mas_item)>0)
{

foreach ($mas_item[0] as $one_item)
{
$kol++;
$t_is=preg_match("#<title>(.*?)</title>#is",$one_item,$title);
$l_is=preg_match("#<link>(.*?)</link>#is",$one_item,$link);
$d_is=preg_match("#<description>(.*?)</description>#is",$one_item,$description);
$p_is=preg_match("#<pubDate>(.*?)</pubDate>#is",$one_item,$date);

if ($t_is and $l_is)
{
$title[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$title[1]);
$link[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$link[1]);
$description[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$description[1]);
$date[1]=preg_replace("#<\!\[CDATA\[(.*?)\]\]>#eis","'\\1'",$date[1]);
$t.="<div>". $date[1] ." <a href='".$link[1]."' target='_blank'>".$title[1]."</a> <br />".$description[1]."</div>";
}
if ($kol >= $kol_print_news) break;
}
}


echo $t;
return (true);
}
?>

Что то пропущено в коде. Может дело в файле? Его нужно сначала создавать или как? Может у кого есть стабильный парсер?



Спустя 18 минут, 37 секунд (21.05.2010 - 12:12) phz написал(а):
Дайте посмотреть ссылку на rss. Может тут лучше испол. simplexml_load_file?

В мануале примеры есть http://php.net/manual/en/function.simplexml-load-file.php


$filename = 'rss/post.xml';

# URL RSS потока
$rss_url = 'http://mstihi.dp.ua/rss.php';

$xml = simplexml_load_file($filename);

$i = 1;
foreach ($xml->channel->item as $item)
{
$title = $item->title;
$description = $item->description;
$link = $item->link;
echo '<b>'.$title.'</b>';
echo '<p>'.$description.' <a href="'.$link.'">' . 'далее</a>...</p>';
$i++;
if ($i > 5) break; // Не более 5 анонсов новостей
}

Спустя 20 минут, 17 секунд (21.05.2010 - 12:32) panacea написал(а):
Ссылку я формирую из данных. Получается такого рода фильтрация новостей.

$encomp = iconv("windows-1251", "UTF-8", $comp_name);
$encomp = urlencode($encomp);
//адрес новостей (URL-адрес RSS потока)
$url_rss = "http://news.google.ru/news?pz=1&cf=all&ned=ru_ru&hl=ru&q=allintext%3A+{$encomp}&cf=all&output=rss";

Спустя 1 день, 44 минуты, 51 секунда (22.05.2010 - 13:17) panacea написал(а):
Добился создания файлов .xml добавлением fopen();

fopen($file_rss, "w+");
if (@!copy ($url_rss,$file_rss))
return (false);


Вызывая функцию print_rss($url_rss,$file_rss,$hclock,$kol_print_news)
не копирует файл, хотя его создает единожды; Защита чтоли у Гугла от копирования, не пойму?
Не могу скопировать
_http://news.google.ru/news?pz=1&cf=all&ned=ru_ru&hl=ru&q=allintext%3A+%D0%98%D0%BD%D1%82%D0%B5%D1%80+%D0%A0%D0%90%D0%9E&cf=all&output=rss

в свой файлик news_123.xml
В чем дело?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.