Intereting Posts
Передача нескольких переменных на другую страницу в URL-адресе Установка Symfony в автономном режиме с помощью композитора Оптимизировать PHP-скрипт, чтобы предотвратить ограничение max_execution_time многомерный массив PDO IN () Задание массива и местозаполнитель Как я могу отправить несколько элементов через кнопку «Купить сейчас» в Paypal Пользовательские поля для фоновых изображений Div? (WordPress) mysqli_query () ожидает как минимум 2 параметра & mysqli_query (): пустые сообщения об ошибках запроса Сортировка массива с использованием нескольких критериев в PHP Как использовать файлы cookie в двух разных доменах? Zend_Db: Адаптер внезапно имеет значение null! Лучшее место для проверки в модели / представлении / модели контроллера? Удалить определенные строки из конца строки XDebug с Symfony и PhpStorm не работает (установка Ubuntu) Доступ к статической переменной по переменной $ var :: $

<! [CDATA в SimplePie

Я работал над некоторым 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 .