Парсинг RSS-файла
Начиная с пятой версии в PHP появился класс SimpleXMLElement, с помощью которого можно легко разобрать любой XML документ, а следовательно HTML и RSS. Данный класс предоставляет возможность доступа к тегам и атрибутам документа как к полям объекта.
Для примера возьмем такой RSS-файл:
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>Информационное агентство УНИАН</title>
<item>
<title>Киев может войти в список самых дорогих городов</title>
<link>http://unian.net/rus/news/news-232406.html</link>
<category>Политика</category>
<description>Англичане пока не обращают взор </description>
<pubDate>Thu, 24 Jan 2008 11:06:00 +0200</pubDate>
</item>
<item>
<title>Что скажут Ющенко акулы бизнеса? - Дурных нема?</title>
<link>http://unian.net/rus/news/news-232400.html</link>
<category>Политика</category>
<description>Следуя логике премьера, было бы правильным разрешить населению не платить за «заведомо некачественные» товары и услуги. А работодателям – за «заведомо некачественную» работу… </description>
<pubDate>Thu, 24 Jan 2008 10:38:00 +0200</pubDate>
</item>
</channel>
</rss>
<rss version="2.0">
<channel>
<title>Информационное агентство УНИАН</title>
<item>
<title>Киев может войти в список самых дорогих городов</title>
<link>http://unian.net/rus/news/news-232406.html</link>
<category>Политика</category>
<description>Англичане пока не обращают взор </description>
<pubDate>Thu, 24 Jan 2008 11:06:00 +0200</pubDate>
</item>
<item>
<title>Что скажут Ющенко акулы бизнеса? - Дурных нема?</title>
<link>http://unian.net/rus/news/news-232400.html</link>
<category>Политика</category>
<description>Следуя логике премьера, было бы правильным разрешить населению не платить за «заведомо некачественные» товары и услуги. А работодателям – за «заведомо некачественную» работу… </description>
<pubDate>Thu, 24 Jan 2008 10:38:00 +0200</pubDate>
</item>
</channel>
</rss>
Нас будет интересовать все что находится внутри тегов <item>. Создадим объект класса SimpleXMLElement и загрузим в него файл "news_rus.rss":
$rss_file = file_Get_contents("news_rus.rss");
$rss_xml = new SimpleXMLElement($rss_file);
После этого все содержимое тегов <item> будет находиться в массиве $rss_xml->channel->item. Таким образом можно добраться до содержимого любого тега в документе.
Следующий фрагмент кода создаст массив $rss, который будет содержать все данные массива $rss_xml->channel->item:
for($i = 0; $i < count($rss_xml->channel->item); $i++)
{
$rss[] = array(
"title" => $rss_xml->channel->item[$i]->title,
"link" => $rss_xml->channel->item[$i]->link,
"category" => $rss_xml->channel->item[$i]->category,
"description" => $rss_xml->channel->item[$i]->description,
"date" => $rss_xml->channel->item[$i]->pubDate
);
}
В некоторых случаях возможна проблема с кодировками для русских букв, для решения этой проблемы воспользуйтесь функцией iconv().
Подробная документация на русском языке по функциям PHP на сайте http://ua2.php.net/manual/ru/index.php
оценка: +1
автор: simplex
|
комментариев нетСтатьи с похожими тегами ↓
Работа в Киеве, работа в Москве: менеджер, программист, юрист. Горячие вакансии. — Безработных.Нет
Салаты, дессерты, торты, рыбные, мясные, блюда из овощей, птицы, рецепты блюд

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