2008-10-08 7 views
20

Ich muss einen RSS/Atom-Feed in verschiedenen Anwendungen erzeugen, und ich möchte eine gute Bibliothek oder Klasse, die in der Lage ist, beide zu produzieren, und die bereits alle gängigen behandelt Probleme.Die beste PHP-Lib/Klasse zum Generieren von RSS/Atom

Zum Beispiel hat das, das ich seit Jahren verwendet, nicht das richtige Format für das Datum, so dass mein Feed nicht von mehreren Aggregatoren gut behandelt wird.

Aktualisierung: Warum suche ich eine Bibliothek? Denn der, den ich jahrelang benutzt habe und den ich ein paar Mal gehackt habe, hat ein kleines Problem. Vielleicht wird eine Spezifikation nicht korrekt befolgt.

Why does my RSS feed duplicate some entries?

Antwort

28

Die PHP Universal Feed Generator scheint genau das zu sein, wonach Sie suchen - sie hat eine einfache, OO-basierte Möglichkeit, einen neuen Feed zu deklarieren und ihn an Ihre gewünschten Spezifikationen auszugeben.

Es hat auch integrierte Datumsformat-Konvertierungen als eine seiner Funktionen.

Eigenschaften:

  • Generiert RSS 1.0, RSS 2.0 und Atom 1.0-Feeds
  • Alle Feeds werden durch Feed-Validator überprüft werden.
  • Implementiert geeignete Namespaces für verschiedene Versionen.
  • Konvertiert automatisch Datumsformate.
  • Erzeugt UUID für ATOM-Feeds.
  • Behandelt CDATA-Codierung für erforderliche Tags.

Unterstützte Versionen:

  • RSS 1.0 (die offiziell RSS veraltete 0,90)
  • RSS 2.0 (offiziell RSS veraltete 0,91, 0,92, 0,93 und 0,94)
  • ATOM 1.0
+2

Und wenn Sie in mit der Bibliothek interessiert sind generieren W3C-standardisierte RSS1/2 und Atom-Feeds, schrieb ich für sie einen Patch: http://sites.google.com/site/danchurchinc/software-patches – amphetamachine

+0

ajaxray.com ist gerade offline, aber [das Paket kann über phpclasses.org heruntergeladen werden] (http://www.phpclasses.org/package/4427-PHP-Generate-feeds-in- RSS-1-0-2-0-an-Atom-Formate.html). – feeela

+0

@feela Prost, Link in der Antwort aktualisiert. – ConroyP

4

Haben Sie wirklich eine Bibliothek benötigen? Wählen Sie das Format und folgen Sie einfach seiner Spezifikation, um gültiges XML auszugeben.

Here is some tutorial, um loszulegen.

3

Hmmm, IMO, es sei denn, Sie möchten Gehäuse, beide Formate sind einfach genug, um ohne Klassen zu fertigen. Z.B. Für die RSS-Feeds einer Website, die ich administriere, habe ich einfach eine kleine Smarty-Vorlage geschrieben, und das funktioniert ziemlich reibungslos.

1

PHP Universal Feed Generator ist eine gute Antwort. Ich musste nur den Code entsprechend zu einem Kommentar auf der Webseite ändern, um korrekte französische Buchstaben zu behandeln.

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

Wie Kereste sagt (1. Juni) FeedWrite Probleme mit einigen nichts Englisch macht utf-8-Zeichen wie ä etc ..Dies ist , weil xml nur 5 Entitäten (&, ", ',) kennt. Also änderte ich die Zeile 298 im Quellcode in

$ nodeText. = (In_array ($ tagName, $ this-> CDATAEncoding))? $ TagContent: str_replace (array ('&', ‚“ ' „'“,“ ), array ('&', '"', '' ", '<', '>' ), $ tagContent);

avoiod charakter in falsche xML-Entitäten Umwandlung

+2

Wenn die Klasse das W3C-Format nicht unterstützt und Probleme mit UTF-8 hat, kann es nicht gut sein ... – feeela

3

Für nicht-Englisch charsets an der PHP-Funktion htmlentities einen Blick: http://php.net/manual/en/function.htmlentities.php

ich habe t gerade hinzugefügt habe. o Unterstützung kroatisch charset:

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