Meilleure façon d'analyser les flux RSS/Atom avec PHP
Magpie RSS est une bibliothèque populaire pour analyser les flux RSS et Atom en PHP, mais il est connu qu'il échoue lorsqu'il rencontre des flux mal formés. Par conséquent, des options alternatives peuvent être nécessaires.
L'une des alternatives recommandées consiste à utiliser les fonctions SimpleXML intégrées de PHP. SimpleXML fournit une structure intuitive pour analyser les documents XML, y compris les flux RSS et Atom. Il détecte et gère également les avertissements et les erreurs XML. Si une erreur se produit, la source du flux peut être nettoyée à l'aide d'un outil tel que HTML Tidy avant de tenter de l'analyser à nouveau.
Voici une classe simple utilisant SimpleXML pour analyser un flux RSS :
class BlogPost { var $date; var $ts; var $link; var $title; var $text; } class BlogFeed { var $posts = array(); function __construct($file_or_url) { $file_or_url = $this->resolveFile($file_or_url); if (!($x = simplexml_load_file($file_or_url))) return; foreach ($x->channel->item as $item) { $post = new BlogPost(); $post->date = (string) $item->pubDate; $post->ts = strtotime($item->pubDate); $post->link = (string) $item->link; $post->title = (string) $item->title; $post->text = (string) $item->description; // Create summary as a shortened body and remove images, // extraneous line breaks, etc. $post->summary = $this->summarizeText($post->text); $this->posts[] = $post; } } private function resolveFile($file_or_url) { if (!preg_match('|^https?:|', $file_or_url)) $feed_uri = $_SERVER['DOCUMENT_ROOT'] .'/shared/xml/'. $file_or_url; else $feed_uri = $file_or_url; return $feed_uri; } private function summarizeText($summary) { $summary = strip_tags($summary); // Truncate summary line to 100 characters $max_len = 100; if (strlen($summary) > $max_len) $summary = substr($summary, 0, $max_len) . '...'; return $summary; } }
Cette classe fournit des méthodes pour charger et analyser un flux RSS, extraire et stocker des publications individuelles et résumer le texte d'une publication à des fins d'affichage. En utilisant SimpleXML, cette classe peut gérer de manière efficace et fiable les flux RSS bien formés et mal formés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!