Подтвердить что ты не робот

Лучший PHP/класс PHP для генерации RSS/Atom

Мне нужно создать канал RSS/Atom в различных приложениях, и я хочу знать хорошую библиотеку или класс, способный производить оба, и который уже обрабатывает все распространенные проблемы.

Например, тот, который я использовал в течение многих лет, не помещает правильный формат для даты, поэтому мой канал плохо обрабатывается несколькими агрегаторами.

Update: Почему я ищу библиотеку? Потому что тот, который я использовал в течение многих лет, который я взломал несколько раз, имеет небольшую проблему. Возможно, спецификация не выполняется должным образом.

Почему мой RSS-канал дублирует некоторые записи?

4b9b3361

Ответ 1

PHP Universal Generator Generator, кажется, именно то, что вам нужно - у него есть простой способ OO, объявляющий новый подавать и выводить его по желаемой спецификации.

Он также имеет встроенные преобразования формата даты в качестве одного из них.

Особенности:

  • Создает RSS 1.0, RSS 2.0 и каналы ATOM 1.0
  • Все фиды проверяются с помощью модуля проверки фида.
  • Реализовывает соответствующие пространства имен для разных версий.
  • Автоматически преобразует форматы даты.
  • Создает UUID для фидов ATOM.
  • Обрабатывает кодировку CDATA для требуемых тегов.

Поддерживаемые версии:

  • RSS 1.0 (который официально устарел RSS 0.90)
  • RSS 2.0 (который официально устарел RSS 0.91, 0.92, 0.93 и 0.94)
  • ATOM 1.0

Ответ 2

Вам действительно нужна библиотека? Выберите формат и просто следуйте его спецификации для вывода допустимого XML.

Вот несколько уроков, чтобы начать.

Ответ 3

Hmmm, IMO, если вы не хотите корпусов, оба этих формата достаточно легки для создания без каких-либо классов. Например. для RSS-каналов веб-сайта, который я администрирую, я просто написал небольшой шаблон Smarty, и он работает довольно гладко.

Ответ 4

Для не-английских кодировок взгляните на функции PHP htmlentities: http://php.net/manual/en/function.htmlentities.php

Я только что добавил для поддержки хорватской кодировки:

$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent, ENT_COMPAT, 'UTF-8');

Ответ 5

Универсальный генератор кормов PHP - хороший ответ. Мне нужно было просто изменить код в соответствии с комментарием на веб-странице, чтобы обрабатывать правильные символы на французском языке.

http://www.ajaxray.com/blog/2008/03/08/php-universal-feed-generator-supports-rss-10-rss-20-and-atom/#comment-341

Как говорит Кереста (1 июня) FeedWrite создает проблемы с некоторыми не-английскими utf-8 символов, например, и т.д. это потому что xml знает только 5 сущностей (&, ",). Поэтому я изменил строку 298 в исходный код в

$nodeText. = (in_array ($ tagName, $This- > CDATAEncoding))? $tagContent: str_replace (массив ('&,'" ', "'","), массив ('&,' ',' ',' <, ' > ), $tagContent);

для автоматического преобразования символов в неправильные объекты xml.