Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   На счёт ленты rss (https://forum.antichat.xyz/showthread.php?t=84545)

гейлордфакерЪ 12.09.2008 13:57

На счёт ленты rss
 
Думаю что правильно выбрал раздел для темы

вобщем такая проблема, у меня комфорт чат в локалке
под него написан бот который читает файл default.xml так вот вопрос как скачать с rss канала .xml файл
а именно мне нужен http://img.lenta.ru/r/EX/import.rss вот этот канал ну или какой либо другой новосной сайт с мировыми новостями.
Кто поможет "+++++" в репу
заранее спасибо.

BlackSun 12.09.2008 14:06

system('wget http://img.lenta.ru/r/EX/import.rss --output-document default.xml');

cash$$$ 12.09.2008 14:44

Канал RSS:

PHP код:

 <?xml version="1.0" encoding="UTF-8"?>
<rss version="0.92">
<channel>
  <title>// титл</title>
  <link>// ссылка </link>
  <language>en</language>
  <item>
    <title>//титл</title>
    <description>
//описание
    </description>
    <link>// ссылка</link>
  </item>
  <item>
    <title>// титл</title>
    <description>………</description>

    <link>// ссылка</link>
  </item>
</channel>
</rss>

Делаем страницу PHP, которая форматирует каждый RSS канал как HTML.

PHP код:

 <?php // Загрузим и проанализируем XML-document ?>
<html xml:lang="en" lang="en">
<head>
  <title><?php // Заголовок будет читаться из RSS ?></title>
</head>
<body>

<h1><?php // Заголовок снова будет читаться из RSS ?></h1>

<?php
// Здесь мы поместим цикл, чтобы включить заголвок каждого элемента и описание
?>

</body>
</html>

Полная программа считывания PHP RSS:

PHP код:

 <?php // Load and parse the XML document 
$rss =  simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title =  $rss->channel->title;
?>
<html xml:lang="en" lang="en">
<head>
  <title><?php echo $title?></title>
</head>
<body>

<h1><?php echo $title?></h1>

<?php
// Здесь мы поместим цикл, чтобы включить заголовок элемента и описание
foreach ($rss->channel->item as $item) {
  echo 
"<h2><a href='"$item->link"'>"$item->title"</a></h2>";
  echo 
"<p>"$item->description"</p>";
}
?>

</body>
</html>


Winst0n 12.09.2008 17:23

cash$$$, последний скрипт который ты написал, будет считывать rss с нужного мне сайта !? я так понял)
у меня ошибка вылазит

Fatal error: Call to undefined function simplexml_load_file() in /home/winston/data/www/мой домен/rss.php on line 2

cash$$$ 12.09.2008 17:50

Цитата:

Сообщение от Winst0n
cash$$$, последний скрипт который ты написал, будет считывать rss с нужного мне сайта !? я так понял)
у меня ошибка вылазит

Fatal error: Call to undefined function simplexml_load_file() in /home/winston/data/www/мой домен/rss.php on line 2

Не все каналы RSS так хорошо сформированы, как это должно быть. Поэтому для исправления ошибки, попробуй так:

PHP код:

<?php
$rss 
=  simplexml_load_file('//ссылка на rss');
if (
$rss) {
  foreach (
$rss->xpath('//title') as $title) {
    echo 
"<h2>"$title"</h2>";
  }
}
else {
  echo 
"Упс! Ввод деформирован!";
}
?>

Другая распространенная ошибка случается, когда документ хорошо сформатирован, но не содержит те элементы, которые нужно найти. Происходит, например, с таким выражением $doc->rss->channel->item->title, когда элементная группа не имеет заголовка. Самый простой подход – всегда обращаться с возвращаемым функцией значением как с массивом данных и заключать его в цикл. Если знать, что первый элемент в документе, даже если там имеется больше чем один, то можно запросить его через индекс, начинающийся с нуля. Например, для запроса заголовка первой группы элементов, можно написать:

$doc->rss->channel->item[0]->title[0]

Если первая группа элементов отсутствует, или не имеет названия, она рассматривается так же, как и любой другой, находящийся за установленными рамками индекс, в массиве PHP. То есть результат равен нулю, который превращается в пустую строку.

Распознавание и отклонение неожиданных форматов, с которыми ты не готов работать, обычно является проверкой на правильность парсера XML. SimpleXML не может проверить относительно шаблона DTD (DTD) или схемы данных. Он проверяет только на формальную правильность.

Winst0n 12.09.2008 18:09

все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд :)

гейлордфакерЪ 13.09.2008 09:08

всем спасибо за помощь
ставлю "+" как и обещял

nerezus 13.09.2008 09:40

Цитата:

все таже ощибка... к моему сожалению пхп вапше незнаю.... только элеметарные веши, как движок устоновит и тд
Виноват одмин твоего хостинга. Пусть модуль доставит.

гейлордфакерЪ 14.09.2008 07:59

кстати сел основательно
выудил
http://img.lenta.ru/r/EX/import.xml
неудобство в том только что нада написать скрипт чтоб постоянно выкачивал данный файл в 8 00 утра и заменял старый на новый

NApoleonchik 14.09.2008 10:55

спасибо, тоже было интересно


Время: 10:18