Heim Backend-Entwicklung PHP-Tutorial RSS 20 PHP-Generierungsklasse, schnelle Lesegenerierung erfordert XML-Datei

RSS 20 PHP-Generierungsklasse, schnelle Lesegenerierung erfordert XML-Datei

Jul 29, 2016 am 09:13 AM
gt lt

Die RSS 2.0-Version der im Projekt verwendeten PHP-Generierungsklasse.

Sie müssen nur die Daten entsprechend der Datenstruktur eingeben, um eine XML-Datei zu generieren und diese über die Funktion auszugeben.

/**
 * Rss生成模块
 * @author JerryLi (@lijian@dzs.mobi)
 * @see 协议说明 RSS规范遵循 2.0
 *   http://jyjsjd.iteye.com/blog/1543483
 *   http://rayleeya.iteye.com/blog/372802
 */
final class CRssBuilder{
    /**
     * 本地字符集
     * @var string
     */
    const LOCAL_CHARSET = 'gbk';
    /**
     * 语言
     * @var string
     */
    const LANGUAGE = 'zh-cn';
    /**
     * RSS所有者
     * @var string
     */
    const GENERATOR = 'www.csdn.net';
    /**
     * 板块通道
     * @var array
     */
    private $_aChannel = null;
    /**
     * 构造函数
     * @param string $aChannel 频道属性
     * <li>array('title'=>'频道标题', 'description'=>'频道摘要', 'link'=>'本频道URL地址')</li>
     */
    public function __construct($aChannel){
        header('Content-Type:text/xml; charset=UTF-8'); //必须输出标准的xml头
        $this->_aChannel = array('channel'=>$aChannel, 'items'=>array());
    }
    /**
     * 析构函数
     */
    public function __destruct(){
    }
    /**
     * 在通道内添加子项目
     * @param int $iChannelId 通道ID(即:addChannel())
     * <li>array('title'=>'标题','link'=>'文章的URL地址', 'description'=>'文章摘要','category'=>'栏目名称','utc_timestemp'=>'发布时间')</li>
     * @return int item的数量
     */
    public function addItems($aParam){
        $this->_aChannel['items'][] = $aParam;
        return count($this->_aChannel['items']);
    }
    /**
     * 将内容序列化成rss的xml结构数据字符串
     * @return string | null
     */
    public function getSerialize(){
        static $sTemplateChannel = null;
        static $sTemplateItem = null;
        if (empty($sTemplateChannel) || empty($sTemplateItem)){
            $aTmp = array();
            $aTmp[] = ' <channel>';
            $aTmp[] = '  <language>'. self::LANGUAGE .'</language>';
            $aTmp[] = '  <generator>'. self::GENERATOR .'</generator>';
            $aTmp[] = '  <ttl>'. (60 * 24) .'</ttl>'; //更新时间为24小时
            $aTmp[] = '  <pubDate>'. gmdate("D, d M Y 23:59:59", time()) .' GMT</pubDate>'; //当前RSS最后发布的时间
            $aTmp[] = '  <title><![CDATA[{@channel_title}]]></title>';
            $aTmp[] = '  <link><![CDATA[{@channel_link}]]></link>';
            $aTmp[] = '  <description><![CDATA[{@channel_description}]]></description>';
            $aTmp[] = '{@item}';
            $aTmp[] = ' </channel>';
            $sTemplateChannel = implode("\n", $aTmp);
            unset($aTmp);

            $aTmp = array();
            $aTmp[] = '  <item>';
            $aTmp[] = '   <title><![CDATA[{@item_title}]]></title>';
            $aTmp[] = '   <link>{@item_link}</link>';
            $aTmp[] = '   <description><![CDATA[{@item_description}]]></description>';
            $aTmp[] = '   <category><![CDATA[{@item_category}]]></category>';
            $aTmp[] = '   <guid><![CDATA[{@item_link}]]></guid>';
            $aTmp[] = '   <pubDate>{@item_pubdate}</pubDate>'; //文章发布时间
            $aTmp[] = '  </item>';
            $sTemplateItem = implode("\n", $aTmp);
            unset($aTmp);
        }

        if (!empty($this->_aChannel)){
            $aTmpItem = array();
            foreach ($this->_aChannel['items'] as $aItem){ //内层遍历item
                $aParam = array(
                    '{@item_title}'=> self::convert_encoding($aItem['title'], self::LOCAL_CHARSET),
                    '{@item_link}'=> $aItem['link'],
                    '{@item_description}'=> self::convert_encoding($aItem['description'], self::LOCAL_CHARSET),
                    '{@item_category}'=> self::convert_encoding($aItem['category'], self::LOCAL_CHARSET),
                    '{@item_pubdate}'=> gmdate("D, d M Y 23:59:59", $aItem['utc_timestemp']) .' GMT',
                );
                $aTmpItem[] = strtr($sTemplateItem, $aParam);
                unset($aParam);$aParam=null;
            }

            $aParam = array(
                '{@channel_title}'=> self::convert_encoding($this->_aChannel['channel']['title'], self::LOCAL_CHARSET),
                '{@channel_link}'=> $this->_aChannel['channel']['link'],
                '{@channel_description}'=> self::convert_encoding($this->_aChannel['channel']['description'], self::LOCAL_CHARSET),
                '{@item}'=> implode("\n", $aTmpItem),
            );

            $aOutBuf = array();
            $aOutBuf[] = '<?xml version="1.0" encoding="utf-8" ?>';
            $aOutBuf[] = '<rss version="2.0">';
            $aOutBuf[] = strtr($sTemplateChannel, $aParam);;
            unset($aParam);$aParam=null;
            $aOutBuf[] = '</rss>';
            return implode("\n", $aOutBuf);
        }else{
            return null;
        }
    }
    /**
     * 对变量内容的进行字符编码转换
     * @param string $sInCharset 转换前的字符集
     * @param string $sOutCharset 转换后的字符集
     * @param string | array $mixd 待转换的变量(数组或字符串)
     * @return string | array 完成转换后的结果
     */
    static public function convert_encoding(& $mixd, $sInCharset, $sOutCharset='utf-8') {
        if ($sInCharset === $sOutCharset) //字符集相同时不转换
            return $mixd;

        if (is_array($mixd)) {
            $tmp = array();
            foreach ($mixd as $key => $val) {
                $tmp[$key] = self::convert_encoding($sInCharset, $sOutCharset, $val);
            }
            return $tmp;
        } else { //字符集相同时不转换
            return mb_convert_encoding($mixd, $sOutCharset, $sInCharset);
        }
    }
}
Nach dem Login kopieren

Ändern Sie bei der Verwendung die verschiedenen darin enthaltenen Konstanten in die von Ihnen benötigten Parameter und verwenden Sie sie dann wie folgt, um den Standard-RSS-Code auszugeben.

Dieses Programm verwendet den lokalen Umgebungszeichensatz von GBK. Wenn Ihre lokale Umgebung UTF-8 ist, ändern Sie bitte diesen Code LOCAL_CHARSET = 'gbk';

/*测试用例*/
$aChannel = array('title'=>'每周精选','description'=>'二手车最新新闻','link'=>'http://www.chemao.com.cn/baike-gonglue.html');
$o = new CRssBuilder($aChannel);
$aItem = array(
    'title'=>'迎接Baby ,上车猫网甜蜜选购心仪POLO',
    'link'=>'http://www.chemao.com.cn/baike/cwpolo.html',
    'description'=>'我和老公相恋于大学,都是北方人。因为家里适合自己的就业机会少,毕业后两人一起来到杭州发展。拼搏了两年,去年7月我们终于结束了5年的爱情长跑,在西子湖畔与亲友一起见证了我们的爱情。',
    'category'=>'每周精选',
    'utc_timestemp'=>time()
);
$o->addItems($aItem);
$aItem = array(
    'title'=>'为满足空间需求,买个二手MPV可还行!',
    'link'=>'http://www.chemao.com.cn/baike/esmpv.html',
    'description'=>'随着二胎政策与全民<strong>创业</strong>的逐步兴起,路面上跑的MPV越来越多,此类车型的强大用途已经让很多人爱不释手。而金九银十的到来不仅令新车优惠越来越大,二手车价格也在急剧跳水,这其中MPV的价格更是”一贬再贬“,对于想入手这类车型的网友来说,现在下手是绝好时机!下面,下面就为大家推荐几款二手车市场常见的热门MPV。',
    'category'=>'每周精选',
    'utc_timestemp'=>time()
);
$o->addItems($aItem);
echo $o->getSerialize();
Nach dem Login kopieren

Das Obige stellt die PHP-Generierungsklasse RSS 20 vor, für die eine schnelle Lesegenerierung erforderlich ist, einschließlich unternehmerischer Inhalte. Ich hoffe, dass sie für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1658
14
PHP-Tutorial
1257
29
C#-Tutorial
1231
24
Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Ist watch4pro besser oder GT? Ist watch4pro besser oder GT? Sep 26, 2023 pm 02:45 PM

Watch4pro und GT verfügen jeweils über unterschiedliche Funktionen und Anwendungsszenarien. Wenn Sie Wert auf umfassende Funktionen, hohe Leistung und ein stilvolles Erscheinungsbild legen und bereit sind, einen höheren Preis in Kauf zu nehmen, ist Watch 4 Pro möglicherweise besser geeignet. Wenn Sie keine hohen funktionalen Ansprüche haben und mehr Wert auf Akkulaufzeit und einen angemessenen Preis legen, ist die GT-Serie möglicherweise besser geeignet. Die endgültige Wahl sollte auf der Grundlage persönlicher Bedürfnisse, Budgets und Vorlieben getroffen werden. Es wird empfohlen, vor dem Kauf Ihre eigenen Bedürfnisse sorgfältig zu prüfen und sich die Bewertungen und Vergleiche verschiedener Produkte anzusehen, um eine fundiertere Entscheidung zu treffen.

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Mar 21, 2024 pm 10:31 PM

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Die Verlängerung der Akkulaufzeit ist der Schlüssel zum mobilen Geräteerlebnis, und das iPad ist ein gutes Beispiel. Wenn Sie das Gefühl haben, dass der Akku Ihres iPads zu schnell leer wird, machen Sie sich keine Sorgen, es gibt eine Reihe von Tricks und Optimierungen in iPadOS 17.4, die die Laufzeit Ihres Geräts deutlich verlängern können. Das Ziel dieses ausführlichen Leitfadens besteht nicht nur darin, Informationen bereitzustellen, sondern auch darin, die Art und Weise zu ändern, wie Sie Ihr iPad verwenden, Ihr gesamtes Batteriemanagement zu verbessern und sicherzustellen, dass Sie sich länger auf Ihr Gerät verlassen können, ohne es aufladen zu müssen. Durch die Übernahme der hier beschriebenen Vorgehensweisen machen Sie einen Schritt hin zu einem effizienteren und bewussteren Einsatz von Technologie, der auf Ihre individuellen Bedürfnisse und Nutzungsmuster zugeschnitten ist. Identifizieren Sie die größten Energieverbraucher

请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 Jun 13, 2016 am 10:24 AM

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

Microsoft führt mit Copilot den Build von Windows 11 23H2 im Release-Preview-Kanal ein Microsoft führt mit Copilot den Build von Windows 11 23H2 im Release-Preview-Kanal ein Sep 28, 2023 pm 07:17 PM

Alle freuen sich auf die heutige Veröffentlichung von Windows 1123H2. Tatsächlich hat Microsoft gerade Updates für die Release-Vorschau veröffentlicht, die dem offiziellen Release-Stadium am nächsten kommt. Bekannt als Build 22631 gibt Microsoft bekannt, dass sie die neue umbenannte Chat-App, Phone Links und Play Together-Widgets einführen, die in den letzten Monaten auf anderen internen Kanälen getestet wurden. „Dieses neue Update wird den gleichen Wartungszweig und die gleiche Codebasis wie Windows 11 Version 22H2 haben und mit allen neu angekündigten Funktionen kumulativ sein, einschließlich Copilot in Windows (Vorschau)“, verspricht Microsoft. Redmond-Beamte weiter

See all articles