За последние 24 часа нас посетили 87253 программиста и 4639 роботов. Сейчас ищут 1955 программистов ...

Подскажите нубу как победить RSS ленту

Тема в разделе "PHP для новичков", создана пользователем Mikael86, 26 фев 2018.

Метки:
  1. Mikael86

    Mikael86 Новичок

    С нами с:
    26 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Создал новостной файл на php, прикрутил свою ленту, данные вытягивает (название статьи, текст, дата, изображение), всё ок. Нашёл ленту с других сайтов, попробовал вытягивать данные тем же кодом, всё есть кроме изображений. Подскажите что я упустил, и как мне достать эти изображения, если не сложно конечно. Заранее говорю в PHP я полный ноль, только начал осваивать и то по ночам, основная работа не даёт серьёзно заняться.

    Код прилагаеться, ссылка живая.
    PHP:
    1. <?php
    2.        $source="http://ecotown.com.ua/rss/detail.php?ID=31"; //адрес RSS ленты
    3.        $document=simplexml_load_file($source);//Функция интерпретирует XML-файл в объект
    4.        $counter = 1;
    5.        foreach($document->channel->item as $i)
    6.        {
    7.         $title="$i->title";
    8.         $desc="$i->description";
    9.         $link="$i->link";
    10.         $date="$i->pubDate";
    11.         {
    12.          echo "<a class='NewsTitle' href='{$link}'>".$title.'</a>'; //выводим на экран заголовок статьи
    13.          echo '<p>'.$desc.'</p>'; //выводим на экран текст статьи
    14.          echo "<img src='{$i->image->url}'>"; //выводим на экран изображение
    15.          echo "<p class='rssdate'>".$date."</p>"; //выводим на экран текст статьи
    16.          $counter ++;
    17.          if ($counter>18) break; //количество статей
    18.         }
    19.        }
    20.        ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    так посмотрите, что там -
    может путь относительный?
     
  3. Mikael86

    Mikael86 Новичок

    С нами с:
    26 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Тогда почему таким образом вытягивает текст и т.д.? Хотя мысль интересная, вечером попробую просмотреть код внутри чужого сайта, может поэксперементирую со ссылкой сайта перед переменной
     
  4. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Потому что description, title - там есть, а image нет))
     
  5. Mikael86

    Mikael86 Новичок

    С нами с:
    26 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    --- Добавлено ---
    На сайте под ссылкой изображения есть, и script-rss.ru их вытягивал, а вчера перестал пинговаться, да и зависеть от чужих скриптов не хочется. Я и с другими сайтами тестил, на них изображения есть а вытянуть их не выходит
     
  6. marsik

    marsik Активный пользователь

    С нами с:
    30 дек 2008
    Сообщения:
    246
    Симпатии:
    17
    Не все фото можно вытащить через image, в вашем случае через enclosure и атрибут url
    HTML:
    1. <enclosure url="http://ecotown.com.ua/upload/iblock/bb1/1.jpg" length="29878" type="image/jpeg"/>
     
    Mikael86 нравится это.
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    думать надо.. думать
    ну посмотрите вы что в объекте $i например через var_dump($i) и покажите тут ...
     
    Mikael86 нравится это.
  8. Mikael86

    Mikael86 Новичок

    С нами с:
    26 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Спасибо за советы, про вар дамп надо ещё читать, к сожалению как я говорил я ещё дно.
     
  9. Mikael86

    Mikael86 Новичок

    С нами с:
    26 фев 2018
    Сообщения:
    5
    Симпатии:
    0
    Спасибо, ребят, за помощь.
    Возможно кому то это будет полезно код теперь выглядит так
    PHP:
    1.   <?php
    2.     $source="rss.php"; //адрес RSS ленты
    3.     $document=simplexml_load_file($source);//Функция интерпретирует XML-файл в объект
    4.     $counter = 1;
    5.     foreach($document->channel->item as $i)
    6.     {
    7.      $title="$i->title";
    8.      $desc="$i->description";
    9.      $link="$i->link";
    10.      $date="$i->pubDate";
    11.      $image = (string)$i->enclosure->attributes()->url;
    12.      {
    13.       echo "<a class='NewsTitle' href='{$link}'>".$title.'</a>'; //выводим на экран заголовок статьи
    14.       echo '<p>'.$desc.'</p>'; //выводим на экран текст статьи
    15.       echo "<img src='$image'/>"; //выводим на экран изображение
    16.       echo "<p class='rssdate'>".$date."</p>"; //выводим на экран текст статьи
    17.       $counter ++;
    18.       if ($counter>6) break; //количество статей
    19.      }
    20.     }
    21.     ?>
    и так выглядит сама лента

    PHP:
    1. <?xml version="1.0"?>
    2.    <rss version="2.0">
    3.         <channel>
    4.            <title>Новости компании </title>
    5.            <link></link>
    6.            <description>Новости компании </description>
    7.  
    8.            <item>
    9.                <title></title>
    10.                <link></link>
    11.                <description></description>
    12.                 <enclosure url="" length="29878" type="image/jpeg"/>
    13.                 <pubDate></pubDate>
    14.           </item>
    15.  
    16. </channel>
    17.   </rss>