PHP Feedreader-Libraries: Zend_Feed vs. SimplePie
Ich hab mich in letzter Zeit ein wenig mit dem Zend Framework beschäftigt und bin nach kurzer zeit auch auf die PHP-Feedreader Komponente Zend_Feed gestoßen.Nach ein bisschen herumprobieren mit diversen Feeds, bin ich aber anscheinend schon an ihre Grenzen gestoßen. Das parsen von Atom-Feeds ist mir nicht gelungen, besser gesagt das extrahieren des link-Tags.Wobei ich jetzt nicht unbedingt die Schuld auf Zend_Feed schieben möchte, ich hab einfach nicht lange herumprobiert und Google hat nichts brauchbares zu dem Thema ausgespuckt.
Langer Rede kurzer Sinn, ich hab mich nach Alternativen umgesehen und bin auch sogleich fündig geworden: Eine oft empfohlene Library ist SimplePie, ein Open Source PHP Feed Reader. Der Vorteil, der sofort ins Auge sticht, ist die Fehlertoleranz und die Unterstüzung für diverse Feed-Formate. Momentan sind das (laut Website):
- RSS 0.90
- RSS 0.91 (Netscape)
- RSS 0.91 (Userland)
- RSS 0.92
- RSS 1.0
- RSS 2.0
- Atom 0.3
- Atom 1.0
Ein weiteres praktisches Feature ist das automatische Auffinden von Feeds einer Website. Man muss also nicht die genaue URL des Feeds eingeben, es reicht auch beispielsweise die Adresse eines Blogs. Das kann Zend_Feed zwar auch, macht es aber nicht automatisch (Was vielleicht auch performancetechnisch intelligenter ist, whatever).
Auch Caching der geladenen Einträge wird unterstützt, was die etwas trägere Performance etwas besser macht.
Zu guter letzt möchte ich ein kleines Beispiel bringen, um zu zeigen, wie einfach SimplePie angewandt werden kann:
<?php
require_once('simplepie/simplepie.inc');
$feed = new SimplePie('webcode.lemme.at');
$feed->handle_content_type();
if($feed->error()){
//handle Error
}else{
echo'<ul>';
foreach ($feed->get_items() as $item) {
echo '<li><ul>';
echo '<li>'.$item->get_title().'</li>';
echo '<li>'.$item->get_permalink().'</li>';
echo '</ul></li>';
}
echo '</ul>';
}
?>
Ich denke mal der Code ist halbwegs selbsterklärend, sollte er das nicht sein, darf natürlich in den Kommentaren gefragt werden ![]()
