"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحليل خلاصات RSS/Atom بكفاءة في PHP باستخدام SimpleXML؟

كيف يمكنني تحليل خلاصات RSS/Atom بكفاءة في PHP باستخدام SimpleXML؟

تم النشر بتاريخ 2024-11-24
تصفح:190

How Can I Efficiently Parse RSS/Atom Feeds in PHP Using SimpleXML?

تحليل خلاصات RSS/Atom باستخدام PHP

عند تحليل خلاصات RSS أو Atom باستخدام Magpie RSS، من المهم التفكير في خيارات بديلة يمكنها التعامل مع يغذي بشكل جيد. أحد هذه الخيارات هو SimpleXML.

SimpleXML، المدمج في PHP، يوفر بنية سهلة الاستخدام لتحليل مستندات XML. يكتشف أخطاء XML ويحذر عند مواجهة أية مشكلات. لمعالجة مثل هذه الأخطاء، يمكنك التفكير في استخدام HTML Tidy لتنظيف المصدر.

إليك فئة أساسية تستخدم SimpleXML لتحليل خلاصات RSS:

class BlogPost { تاريخ $ العام؛ $ts العامة؛ رابط $ العام؛ عنوان $ العام؛ نص $ عام؛ } فئة مدونة المدونة { مشاركات $ العامة = []; الوظيفة العامة __construct($file_or_url) { $file_or_url = $this->resolveFile($file_or_url); if (!$x = simplexml_load_file($file_or_url)) return; foreach ($x->قناة->عنصر كعنصر $) { $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; $post->summary = $this->summarizeText($post->text); $this->posts[] = $post; } } وظيفة خاصة ResolveFile($file_or_url) { إذا (!preg_match('|^https?:|', $file_or_url)) $feed_uri = $_SERVER['DOCUMENT_ROOT'] .'/shared/xml/'. $file_or_url; آخر $feed_uri = $file_or_url; إرجاع $feed_uri؛ } وظيفة خاصة تلخيص النص(ملخص $) { $summary = strip_tags($summary); $max_len = 100; إذا (سترلين($summary) > $max_len) $summary = substr($summary, 0, $max_len) . '...'; إرجاع ملخص $؛ }
class BlogPost {
    public $date;
    public $ts;
    public $link;
    public $title;
    public $text;
}

class BlogFeed {
    public $posts = [];

    public 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;
            $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);
        $max_len = 100;
        if (strlen($summary) > $max_len)
            $summary = substr($summary, 0, $max_len) . '...';

        return $summary;
    }
}
من خلال استخدام SimpleXML ومعالجة أخطاء XML، يمكنك تحليل خلاصات RSS وAtom بشكل فعال باستخدام PHP.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3