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

Привет тем, кому не без различна судьба веб-программирования.
В сегодняшней заметки мы поговорим с вами о создании небольшого парсера на 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 — соответственно описание или сама цитата в данном случае.
Теперь осталось собрать вывод и вывести цитату.
Все очень просто.
и тебе хорошего дня
у меня вот такая структура xml-файла:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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>
после загрузки:
мне почему-то приходится начинать foreach не с корневого элемента (priceLists), а со следующего (objList):
Не знаю почему, но у меня абра-кадабра выводится. менял кодировку на UTF-8, windows-1251 и еще разные — все равно абра-кадабра. Что можно сделать?
приведи весь исходный код, разберемся