Maison >développement back-end >tutoriel php >Quelle est la meilleure façon d'analyser les flux RSS/Atom en PHP à l'aide de SimpleXML ?

Quelle est la meilleure façon d'analyser les flux RSS/Atom en PHP à l'aide de SimpleXML ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-25 15:51:16731parcourir

What's the Best Way to Parse RSS/Atom Feeds in PHP Using SimpleXML?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn