|
|
|
| Здравствуйте!
Ничего путного не могу найти по поводу того как работать с RSS? Подскажите пожалуйста, может где информацию можно найти подробную, так как сталкиваюсь с этим в первый раз. Вот к примеру на яндексе есть ссылка на файл .rss, так понимаю что с ним нужно что-то делать, а что именно? Что нужно сделать что бы повесить новости на сайте?
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Mefisto84
(02.01.2007 в 17:47)
| | Вы хотите генерировать RSS-рассылку или наоборот читать RSS-ленту новостей и выводить их на своём сайте? | |
|
|
|
|
|
|
|
для: cheops
(02.01.2007 в 22:13)
| |
<?php
$text = file_get_contents("адрес rss");
if($text)
{
$Months=array('Jan'=>'01', 'Feb'=>'02', 'Mar'=>'03', 'Apr'=>'04', 'May'=>'05', 'Jun'=>'06', 'Jul'=>'07', 'Aug'=>'08', 'Sep'=>'09','Oct'=>'10','Nov'=>'11','Dec'=>'12');
$Days=array('Mon'=>'Пн', 'Tue'=>'Вт', 'Wed'=>'Ср', 'Thu'=>'Чт', 'Fri'=>'Пт', 'Sat'=>'Сб', 'Sun'=>'Вс');
$pattern = "/<item>(.*?)<\/item>/ims";/* регулярное выражения для выбора данных между двумя тегами <item></item>*/
preg_match_all($pattern, $text, $array);
$patt1 = "/<title>(.*?)<\/title>/ims";/*Заголовок новости*/
$patt2 = "/<description>(.*?)<\/description>/ims";/*тело новости*/
$patt3 = "/<pubDate>(.*?)<\/pubDate>/ims";/*дата публикации*/
$patt4 = "/<link>(.*?)<\/link>/ims";/*ссылка на сайт новостей*/
$i=0;
foreach ($array[1] as $v){
preg_match_all($patt1, $v, $temp);
$news[$i]['title'] = $temp[1][0];
preg_match_all($patt2, $v, $temp);
$news[$i]['description'] = html_entity_decode($temp[1][0]);
/*php автоматически переконвертил html символы поэтому вернем все обратно :)*/
preg_match_all($patt3, $v, $temp);
$news[$i]['pubDate'] = $temp[1][0];
preg_match_all($patt4, $v, $temp);
$news[$i]['link'] = urldecode($temp[1][0]);
$i++;
}
foreach ($news as $v){
foreach($Days as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
foreach($Months as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
$v['link']=str_replace(адрес страницы с файлом rss, $v['link']);
$v['pubDate']=str_replace(GMT, "", $v['pubDate']);
$v['pubDate']=rtrim($v['pubDate']);
echo "<div class=news_title><br><a href=".$v['link'].">".$v['title']."</a></div><a class=answers>".$v['description']."<font color='#666666'> [".$v['pubDate']."]";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: technic611
(03.01.2007 в 07:50)
| | Да, я хочу повесить у себя на сайте новости с Яндекса. А это так понимаю Вы мне дали прям готовый уже скрипт? Он разбирает RSS файл? Правильно? Большое спасибо, вот уж не ожидал. | |
|
|
|
|
|
|
|
для: Mefisto84
(03.01.2007 в 09:31)
| | Появился один вопрос, проверил скрипт он все правильно разбирает, все работает, кроме одного. Он не правильно указывает ссылку на новость. То есть сам текст ссылки он пишет правильно, а вот при нажатии на ссылку он переходит на главную страницу моего сайта. Подскажите пожалуйста в чем причина?
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Mefisto84
(03.01.2007 в 20:45)
| | Ну что никто не подскажет что-ли? Может я не правильно объяснил. Скажу по-другому, в общем когда выводится ссылка на новость, <a href="здесь не правильно выводится ссылка">Здесь все нормально</a>. То есть сам текст который выводится на экран пишется правильно, а именно адрес пишется не правильно. Где тут нужно поправить в коде? | |
|
|
|
|
|
|
|
для: Mefisto84
(15.01.2007 в 21:11)
| | все работает :) спасибо.
Только в <a href="выводится название сайта :) "> | |
|
|
|
|
|
|
|
для: mozhunt
(16.01.2007 в 00:09)
| | что-то я не въехал, последнее сообщение вообще о чем? я наю что там выводится, я прошу подсказать как это исправить. | |
|
|
|
|
|
|
|
для: Mefisto84
(16.01.2007 в 09:38)
| | Я тоже незнаю :) | |
|
|
|
|
|
|
|
для: mozhunt
(17.01.2007 в 20:00)
| | возник вопрос: а как его изменить,чтобы он выдирал только 5 новостей.. или 10?
знаю,что нужно цикл поставить,но вот куда... | |
|
|
|
|
|
|
|
для: mozhunt
(27.01.2007 в 19:02)
| |
<?php
$text = file_get_contents("http://localhost/rss.xml");
if($text)
{
$Months=array('Jan'=>'01', 'Feb'=>'02', 'Mar'=>'03', 'Apr'=>'04', 'May'=>'05', 'Jun'=>'06', 'Jul'=>'07', 'Aug'=>'08', 'Sep'=>'09','Oct'=>'10','Nov'=>'11','Dec'=>'12');
$Days=array('Mon'=>'Пн', 'Tue'=>'Вт', 'Wed'=>'Ср', 'Thu'=>'Чт', 'Fri'=>'Пт', 'Sat'=>'Сб', 'Sun'=>'Вс');
$pattern = "/<item>(.*?)<\/item>/ims";/* регулярное выражения для выбора данных между двумя тегами <item></item>*/
preg_match_all($pattern, $text, $array);
$patt1 = "/<title>(.*?)<\/title>/ims";/*Заголовок новости*/
$patt2 = "/<description>(.*?)<\/description>/ims";/*тело новости*/
$patt3 = "/<pubDate>(.*?)<\/pubDate>/ims";/*дата публикации*/
$patt4 = "/<link>(.*?)<\/link>/ims";/*ссылка на сайт новостей*/
$i=0;
foreach ($array[1] as $v){
preg_match_all($patt1, $v, $temp);
$news[$i]['title'] = $temp[1][0];
preg_match_all($patt2, $v, $temp);
$news[$i]['description'] = html_entity_decode($temp[1][0]);
/*php автоматически переконвертил html символы поэтому вернем все обратно :)*/
preg_match_all($patt3, $v, $temp);
$news[$i]['pubDate'] = $temp[1][0];
preg_match_all($patt4, $v, $temp);
$news[$i]['link'] = urldecode($temp[1][0]);
$i++;
}
$i=0;
foreach ($news as $v){
foreach($Days as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
foreach($Months as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
$v['pubDate']=str_replace(GMT, "", $v['pubDate']);
$v['pubDate']=rtrim($v['pubDate']);
if($i<5)
{
echo "<div class=news_title><br><a href=".$v['link'].">".$v['title']."</a></div><a class=answers>".$v['description']."<font color='#666666'> [".$v['pubDate']."]";
}
$i++;
}
}
?>
|
| |
|
|
|
|
|
|
|
для: technic611
(28.01.2007 в 05:03)
| | Не знаю, почему, но у меня не получается запустить этот скрипт. Вот, я делаю так:
<?php
$text = file_get_contents("http://news.yandex.ru/theaters.rss");
if($text)
{
$Months=array('Jan'=>'01', 'Feb'=>'02', 'Mar'=>'03', 'Apr'=>'04', 'May'=>'05', 'Jun'=>'06', 'Jul'=>'07', 'Aug'=>'08',
'Sep'=>'09','Oct'=>'10','Nov'=>'11','Dec'=>'12');
$Days=array('Mon'=>'Пн', 'Tue'=>'Вт', 'Wed'=>'Ср', 'Thu'=>'Чт', 'Fri'=>'Пт', 'Sat'=>'Сб', 'Sun'=>'Вс');
$pattern = "/<item>(.*?)<\/item>/ims";/* регулярное выражения для выбора данных между двумя тегами <item></item>*/
preg_match_all($pattern, $text, $array);
$patt1 = "/<title>(.*?)<\/title>/ims";/*Заголовок новости*/
$patt2 = "/<description>(.*?)<\/description>/ims";/*тело новости*/
$patt3 = "/<pubDate>(.*?)<\/pubDate>/ims";/*дата публикации*/
$patt4 = "/<link>(.*?)<\/link>/ims";/*ссылка на сайт новостей*/
$i=0;
foreach ($array[1] as $v){
preg_match_all($patt1, $v, $temp);
$news[$i]['title'] = $temp[1][0];
preg_match_all($patt2, $v, $temp);
$news[$i]['description'] = html_entity_decode($temp[1][0]);
/*php автоматически переконвертил html символы поэтому вернем все обратно :)*/
preg_match_all($patt3, $v, $temp);
$news[$i]['pubDate'] = $temp[1][0];
preg_match_all($patt4, $v, $temp);
$news[$i]['link'] = urldecode($temp[1][0]);
$i++;
}
foreach ($news as $v){
foreach($Days as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
foreach($Months as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
$v['link']=str_replace("http://news.yandex.ru/theaters.rss", $v['link']);
$v['pubDate']=str_replace(GMT, "", $v['pubDate']);
$v['pubDate']=rtrim($v['pubDate']);
echo "<div class=news_title><br><a href=".$v['link'].">".$v['title']."</a></div><a class=answers>".$v['description']."<font
color='#666666'> [".$v['pubDate']."]";
}
}
?>
|
В месте, где должен быть текст, выдаваемый скриптом, ничего нет. Подскажите, что я делаю не так? | |
|
|
|
|
|
|
|
для: Footer
(11.02.2007 в 13:56)
| | Хелп! Помогите! Плиз! Никак не разберусь! | |
|
|
|
|
|
|
|
для: Footer
(11.02.2007 в 16:25)
| | Жду помощи! Хелп! Помогите разобраться! Плиз! | |
|
|
|
|
|
|
|
для: Footer
(12.02.2007 в 14:39)
| | Вот этот же скрипт, с которым я тогда мучался, после немногих изменений(проблемы были с функцией urldecode) он заработал, а до этого и у меня не работал. Короче вот работающая версия, которой я пользуюсь, как гвоорится проверено :-) :
$text = file_get_contents("адрес файла rss");
if($text)
{
$Months=array('Jan'=>'01', 'Feb'=>'02', 'Mar'=>'03', 'Apr'=>'04', 'May'=>'05', 'Jun'=>'06', 'Jul'=>'07', 'Aug'=>'08', 'Sep'=>'09','Oct'=>'10','Nov'=>'11','Dec'=>'12');
$Days=array('Mon'=>'Пн', 'Tue'=>'Вт', 'Wed'=>'Ср', 'Thu'=>'Чт', 'Fri'=>'Пт', 'Sat'=>'Сб', 'Sun'=>'Вс');
$pattern = "/<item>(.*?)<\/item>/ims";/* регулярное выражения для выбора данных между двумя тегами <item></item>*/
preg_match_all($pattern, $text, $array);
$patt1 = "/<title>(.*?)<\/title>/ims";/*Заголовок новости*/
$patt2 = "/<description>(.*?)<\/description>/ims";/*тело новости*/
$patt3 = "/<pubDate>(.*?)<\/pubDate>/ims";/*дата публикации*/
$patt4 = "/<link>(.*?)<\/link>/ims";/*ссылка на сайт новостей*/
$i=0;
foreach ($array[1] as $v){
preg_match_all($patt1, $v, $text);
$news[$i]['title'] = $text[1][0];
preg_match_all($patt2, $v, $text);
$news[$i]['description'] = html_entity_decode($text[1][0]);
/*php автоматически переконвертил html символы поэтому вернем все обратно :)*/
preg_match_all($patt3, $v, $text);
$news[$i]['pubDate'] = $text[1][0];
preg_match_all($patt4, $v, $text);
$news[$i]['lind'] = urldecode($text[1][0]);
$i++;
}
foreach ($news as $v){
foreach($Days as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
foreach($Months as $EngName => $RusName)
$v['pubDate']=str_replace($EngName, $RusName, $v['pubDate']);
$v['pubDate']=str_replace(GMT, "", $v['pubDate']);
$v['pubDate']=rtrim($v['pubDate']);
echo "<center><a href=".$v['lind']." target=\"_blank\" title=\"".$v['title']."\"><b>$v['title']."</b></a></center><br>".$v['description']." [".$v['pubDate']."]";
}
}
|
| |
|
|
|
|
|
|
|
для: Mefisto84
(12.02.2007 в 17:39)
| | Mefisto84, спасибо за помощь. Но у меня всё равно пока ничего не получается. Я изменил только:
$text = file_get_contents("http://news.yandex.ru/theaters.rss");
|
Загрузил файл на сервер и запустил. Но вообще страница не грузиться. Не знаю что делать. Помогите, очень нужно разобраться а я в этом не очень понимаю. Хелп! | |
|
|
|
|
|
|
|
для: Mefisto84
(02.01.2007 в 17:47)
| | А про XMLDOM мы забыли? | |
|
|
|
|
|
|
|
для: mtr
(12.02.2007 в 21:07)
| | Во-первых не XMLDOM, а DOMXML. А во-вторых: забудьте про него - он остался в четвертой версии. В пятой - только domdocument. | |
|
|
|
|
|
|
|
для: Loki
(12.02.2007 в 21:50)
| | А вы не могли бы поподробнее про это написать. А то я вообще про это ничего не знаю. Просто сохраняю код как файл с расширением .php и всё. Наверное, этого недостаточно? Подскажите, что ещё нужно сделать, чтобы всё заработало? | |
|
|
|
|
|
|
|
для: Footer
(13.02.2007 в 09:35)
| | Это уже теологический спор:)
Если вам удобнее разбирать с помощью регулярных выражений - делайте так. Но самые модные веяния призывают работать с xml файлом как с объектом | |
|
|
|
|
|
|
|
для: Loki
(13.02.2007 в 10:39)
| | Там многие объяснения написаны на английском. Не очень понятно. А, вообще, если я использую регулярные выражения, то правильно весь код сохранять под именем с расширением .php? Или как правильно делать? Может, нужно сохранять как xml? Я просто не понимаю, как осуществляется разбор содержимого файла rss. Вот я знаю адрес канала, скажем, какого-нибудь на Яндексе типа: http://news.yandex.ru/theaters.rss. Хочу содержимое этого новостного канала размещать на сайте, но не знаю как. Приведённый выше скрипт, почему-то не работает. Не знаю в чём дело. Помогите советом! Плиз! | |
|
|
|
|