O melhor PHP lib / class para gerar RSS / Atom

Eu tenho que produzir um feed RSS / Atom em várias aplicações, e eu quero conhecer uma boa biblioteca ou class que seja capaz de produzir os dois, e que já lida com todos os problemas comuns.

Por exemplo, o que usei durante anos não coloca o formato certo para data, então meu feed não é bem tratado por vários agregadores.

Atualização: por que estou procurando por uma biblioteca? Porque o que eu usei há anos, que eu tinha pirateado algumas vezes, tem um pequeno problema. Talvez uma especificação não seja seguida corretamente.

Por que meu feed RSS duplica algumas inputs?

   

O PHP Universal Feed Generator parece ser exatamente o que você está procurando – ele possui uma maneira simples, baseada em OO, de declarar um novo feed e de exibi-lo para a especificação desejada.

Ele também possui conversões de formato de data incorporadas como uma das suas características.

Características:

  • Gera RSS 1.0, RSS 2.0 e ATOM 1.0 feeds
  • Todos os feeds são validados pelo validador de feed.
  • Implementa espaços de nome apropriados para diferentes versões.
  • Converte automaticamente formatos de data.
  • Gera UUID para alimentação ATOM.
  • Manipula a codificação CDATA para as tags necessárias.

Versões suportadas:

  • RSS 1.0 (que oficialmente obsoleto RSS 0.90)
  • RSS 2.0 (que oficialmente obsoleto RSS 0.91, 0.92, 0.93 e 0.94)
  • ATOM 1.0

Você realmente precisa de uma biblioteca? Escolha o formato e siga suas especificações para enviar XML válido.

Aqui está um tutorial para começar.

Hmmm, IMO, a menos que você queira gabinetes, ambos os formatos são fáceis de criar sem qualquer class. Por exemplo, para os feeds RSS de um site que administrai, escrevi simplesmente um pequeno modelo Smarty, e funciona muito bem.

Para charles não ingleses, veja a function PHP htmlentities: http://php.net/manual/en/function.htmlentities.php

Acabei de adicionar para suportar charset croata:

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

O PHP Universal Feed Generator é uma boa resposta. Eu tinha apenas para modificar o código de acordo com um comentário na página da Web para lidar com caracteres franceses corretos.

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

Como Kereste diz (1. de junho), FeedWrite faz problemas com alguns caracteres utf-8 sem inglês como ä etc. Isso porque o xml só conhece 5 entidades (&, “, ‘,). Então eu mudei a linha 298 no código fonte para

$ nodeText. = (in_array ($ tagName, $ this-> CDATAEncoding))? $ tagContent: str_replace (array (‘&’, ‘”‘,” ‘”,”), array (‘ & ‘,’ “‘,’ ”, ‘< ', '>‘), $ tagContent);

para evitar a conversão de charakters em entidades xml erradas.