Я работал над некоторым RSS Scrapper, который анализирует данные из нескольких источников. Тем не менее, все эти источники имеют собственную реализацию описания RSS.
Один, в частности, использует теги CDATA для написания описания на подобном, например
<![CDATA[ <p align=justify><font face="verdana, arial, helvetica, sans-serif" size=1> <font color=#004080></font> SOME TEXT GOES HERE </font></p> ]]>
Однако, если я попытаюсь получить описание элемента с помощью SimplePie, я получаю этот вывод
<div><p align="justify"></p></div>
Я использую этот php-скрипт для выполнения всего этого
foreach($feed->get_Items() as $item) { $title = $item->get_title(); $description = $item->get_description(); //some other stuff }
И теперь хорошая часть
Название в фиде также похоже на это
<title> <![CDATA[ Nice title ]]> </title>
И … это работает !!!
Как я могу получить описание фида? Я пробовал почти все!
Спасибо!
Методы get_description () и get_content () выполняют санитарию по необработанным данным, но вы можете использовать метод get_item_tags (), чтобы извлечь его нетронутым, например:
$desc_tags = ($item->get_item_tags('', 'description')); // empty namespace is RSS2.0 if ($desc_tags) { print $desc_tags[0]['data']; }
Единственное предостережение заключается в том, что get_content
или get_description
попытаются определить пространство имен, вам придется предоставить его get_item_tags
, здесь вы можете увидеть константы пространства имен . Если вы заранее знаете формат фидов, который не должен быть проблемой, в противном случае вам может потребоваться пробная get_description
и ошибка, которые делает get_description
.