• RSS парсер на PHP

    by  • 10.02.2010 • php, парсеры, программирование • Комментарии [3]

    simplexml1 e1265814311218 RSS парсер на PHP
    Привет тем, кому не без различна судьба веб-программирования.
    В сегодняшней заметки мы поговорим с вами о создании небольшого парсера на PHP. Что парсить-то будем, спросите вы. Отвечу сразу, что парсить будем rss-ленту, ставшую в последнее время так популярной на примере Цитатника Рунета bash.org.ru.
    Если вы посмотрите на исходный код после того, как проследуете по адресу bash.org.ru/rss, то увидите там обычный текст, который не очень сложно структурирован. Это и есть обычный XML, который и будем разбирать на составляющие. Не буду томить, сразу приведу код на PHP.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $rss_url = 'http://bash.org.ru/rss';
    $rss = simplexml_load_file($rss_url);
    foreach ($rss->channel->item as $item) {
        $title = $item->title;
        $description = $item->description;
        $link = $item->link;
        $out = "<h1>" . $title . "</h1>";
        $out .= "<p>" . $description . "</p>";
        $out .= "<a href='" . $link . "'>Постоянная ссылка</a>";
        echo $out;
    }
    ?>

    Во второй строке скрипта мы загружаем rss, используя расширение PHP для работы с XML SimpleXML.
    Дальше нам предстоит пройтись по всему дереву, выделяя нужные элементы.
    Корневым элементом в данном случае является

    1
    <channel>

    Он состоит из item’ов. Которые мы и получаем в цикле. И заносим нужные нам данные в переменные, чтобы сформировать красивый вывод.
    Так в переменной $title будет храниться заголовок каждого item’а. В $description — соответственно описание или сама цитата в данном случае.
    Теперь осталось собрать вывод и вывести цитату.
    Все очень просто.

    Комментарии к "RSS парсер на PHP"

    1. Максим
      06.07.2010 at 12:51

      и тебе хорошего дня :) у меня вот такая структура xml-файла:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      <?xml version="1.0" encoding="UTF-8" ?>
       <priceLists>
        <upd>0</upd>
       <objList>
       <obj>
        <priceID>15</priceID>
        <currencyName>руб.</currencyName>
       <NomenclatureList>
       <nomenclature>
        <id>14673</id>
        <price>4050</price>
        </nomenclature>
       <nomenclature>
        <id>14674</id>
        <price>3600</price>
        </nomenclature>
       <nomenclature>
        <id>18821</id>
        <price>1200</price>
        </nomenclature>
      </NomenclatureList>
      </obj>
      </objList>
      </priceLists>

      после загрузки:

      1
      $xmlPrices = simplexml_load_file($path . $filename);

      мне почему-то приходится начинать foreach не с корневого элемента (priceLists), а со следующего (objList):

      1
      foreach ($xmlPrices->objList->obj->NomenclatureList->nomenclature as $x) {
    2. 09.01.2011 at 11:25

      Не знаю почему, но у меня абра-кадабра выводится. менял кодировку на UTF-8, windows-1251 и еще разные — все равно абра-кадабра. Что можно сделать?

    Добавить комментарий

    Ваш e-mail не будет опубликован. Обязательные поля помечены *