RSS 20 php產生類,快讀產生需要xml檔案

來源:互聯網
上載者:User
在項目中用到的RSS 2.0版本的php產生類。

只需要根據資料結構吧資料輸入進去就能產生一個xml檔案,並通過函數輸出。

/** * 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 頻道屬性     * 
  • array('title'=>'頻道標題', 'description'=>'頻道摘要', 'link'=>'本頻道URL地址')
  • */ 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()) *
  • array('title'=>'標題','link'=>'文章的URL地址', 'description'=>'文章摘要','category'=>'欄目名稱','utc_timestemp'=>'發布時間')
  • * @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[] = ' '; $aTmp[] = ' '. self::LANGUAGE .''; $aTmp[] = ' '. self::GENERATOR .''; $aTmp[] = ' '. (60 * 24) .''; //更新時間為24小時 $aTmp[] = ' '. gmdate("D, d M Y 23:59:59", time()) .' GMT'; //當前RSS最後發布的時間 $aTmp[] = ' <![CDATA[{@channel_title}]]>'; $aTmp[] = ' {@channel_link}'; $aTmp[] = ' {@channel_description}'; $aTmp[] = '{@item}'; $aTmp[] = ' '; $sTemplateChannel = implode("\n", $aTmp); unset($aTmp); $aTmp = array(); $aTmp[] = ' '; $aTmp[] = ' <![CDATA[{@item_title}]]>'; $aTmp[] = ' {@item_link}'; $aTmp[] = ' {@item_description}'; $aTmp[] = ' {@item_category}'; $aTmp[] = ' {@item_link}'; $aTmp[] = ' {@item_pubdate}'; //文章發布時間 $aTmp[] = ' '; $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[] = ''; $aOutBuf[] = ''; $aOutBuf[] = strtr($sTemplateChannel, $aParam);; unset($aParam);$aParam=null; $aOutBuf[] = ''; 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); } }}

    使用的時候將裡面的幾個常量修改成你需要的參數,然後如下述用就能輸出標準的rss代碼。

    本程式使用 GBK的本地環境字元集,如果你的本地環境是UTF-8,請修改這個條代碼 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'=>'隨著二胎政策與全民創業的逐步興起,路面上跑的MPV越來越多,此類車型的強大用途已經讓很多人愛不釋手。而金九銀十的到來不僅令新車優惠越來越大,二手車價格也在急劇跳水,這其中MPV的價格更是”一貶再貶“,對於想入手這類車型的網友來說,現在下手是絕好時機!下面,下面就為大家推薦幾款二手車市場常見的熱門MPV。',    'category'=>'每周精選',    'utc_timestemp'=>time());$o->addItems($aItem);echo $o->getSerialize();

    以上就介紹了RSS 20 php產生類,快讀產生需要xml檔案,包括了創業方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.