Zend_Feed 的项目实际应用
生活随笔
收集整理的這篇文章主要介紹了
Zend_Feed 的项目实际应用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@author???? songfeng
?????? RSS0.9/1.0/2.0 ATOM 全部是內容聚合的應用,優點一是瀏覽者可以訂閱其網站,能收到最新的網站更新內容.二是有利于搜索引擎抓取.個人感覺缺點是會被其它網站當成復制品,批量 抓取網站更新內容, 但這也許又不是壞事. RSS標準有些亂, 0.9和2.0 與1.0各有其主, ATOM是一個博客網站BLOGGER引入的, 由GOOGLE發揚光大, 但還是遵循RSS2.0的網站較多, 說白了兩家只是標 準之爭. 用戶體驗都一樣.
Zend_Feed對RSS和ATOM進行了簡單封裝,實現的功能大致包裝指定網站FEED的抓取,XML文件抓取, 字符串抓取, 數組抓取, 生成FEED, 生成并輸出FEED.
通用結構如下
array('title''description''link''charset''language''entries' => array (array('title''link''description''author''category''pubDate')))
當然詳細的KEY您就要參考相關手冊了,上面的entries其實就是RSS的item.
rss atom 元素名稱對比
title title?????????????????? 網站標題
link id??? 網站地址
description subtitle ?? 網站描述
pubDate updated????????? 網站更新時間
entries內(RSS為Item):
title title?????????????????? 每篇文章標題
link id ???????????????? ?? 每篇文章鏈接地址
description summary?????????? 每篇文章的描述
pubDate updated????????????? 每篇文章的發布時間
這是最后的程序代碼, 我是放在MODEL里的, 很簡易,沒怎么構思, 只是基本的思想, 當然我們可以換成更巧妙的方式去實現它, 或者自己手動生成, 只有最基本的功能就是把網站最新的文章前30篇做為FEED
??????? $sql = 'SELECT archive_id, title, content, author, dateline FROM archives ORDER BY dateline DESC LIMIT 30';$stmt = $this->_db->query($sql);while($row = $stmt->fetch()) {$rssRow['title'] = $row['title'];$rssRow['link'] = 'http://' . $_SERVER['SERVER_NAME'] . '/article-view-' . $row['archive_id'] . '.shtml';$rssRow['description'] = isset($row['content']) ? $row['content'] : '內容為空';$rssRow['author'] = $row['author'];$rssRow['pubDate'] = date('Y年m月d日 H:i', $row['dateline']);$rssDB[] = $rssRow;}$rss['title'] = $setting->setting_web_title;$rss['description'] = $setting->setting_web_title_desc;$rss['link'] = 'http://' . $_SERVER['SERVER_NAME'];$rss['charset'] = 'utf-8';$rss['language'] = 'zh-cn';$rss['entries'] = $rssDB;try {$feed = Zend_Feed::importArray($rss); }catch(Zend_Exception $e) {echo $e->getMessage();exit;}return $feed->saveXml();
???????????
?????? RSS0.9/1.0/2.0 ATOM 全部是內容聚合的應用,優點一是瀏覽者可以訂閱其網站,能收到最新的網站更新內容.二是有利于搜索引擎抓取.個人感覺缺點是會被其它網站當成復制品,批量 抓取網站更新內容, 但這也許又不是壞事. RSS標準有些亂, 0.9和2.0 與1.0各有其主, ATOM是一個博客網站BLOGGER引入的, 由GOOGLE發揚光大, 但還是遵循RSS2.0的網站較多, 說白了兩家只是標 準之爭. 用戶體驗都一樣.
Zend_Feed對RSS和ATOM進行了簡單封裝,實現的功能大致包裝指定網站FEED的抓取,XML文件抓取, 字符串抓取, 數組抓取, 生成FEED, 生成并輸出FEED.
通用結構如下
array('title''description''link''charset''language''entries' => array (array('title''link''description''author''category''pubDate')))
當然詳細的KEY您就要參考相關手冊了,上面的entries其實就是RSS的item.
rss atom 元素名稱對比
title title?????????????????? 網站標題
link id??? 網站地址
description subtitle ?? 網站描述
pubDate updated????????? 網站更新時間
entries內(RSS為Item):
title title?????????????????? 每篇文章標題
link id ???????????????? ?? 每篇文章鏈接地址
description summary?????????? 每篇文章的描述
pubDate updated????????????? 每篇文章的發布時間
這是最后的程序代碼, 我是放在MODEL里的, 很簡易,沒怎么構思, 只是基本的思想, 當然我們可以換成更巧妙的方式去實現它, 或者自己手動生成, 只有最基本的功能就是把網站最新的文章前30篇做為FEED
??????? $sql = 'SELECT archive_id, title, content, author, dateline FROM archives ORDER BY dateline DESC LIMIT 30';$stmt = $this->_db->query($sql);while($row = $stmt->fetch()) {$rssRow['title'] = $row['title'];$rssRow['link'] = 'http://' . $_SERVER['SERVER_NAME'] . '/article-view-' . $row['archive_id'] . '.shtml';$rssRow['description'] = isset($row['content']) ? $row['content'] : '內容為空';$rssRow['author'] = $row['author'];$rssRow['pubDate'] = date('Y年m月d日 H:i', $row['dateline']);$rssDB[] = $rssRow;}$rss['title'] = $setting->setting_web_title;$rss['description'] = $setting->setting_web_title_desc;$rss['link'] = 'http://' . $_SERVER['SERVER_NAME'];$rss['charset'] = 'utf-8';$rss['language'] = 'zh-cn';$rss['entries'] = $rssDB;try {$feed = Zend_Feed::importArray($rss); }catch(Zend_Exception $e) {echo $e->getMessage();exit;}return $feed->saveXml();
???????????
轉載于:https://www.cnblogs.com/silvester/archive/2009/04/10/1694661.html
總結
以上是生活随笔為你收集整理的Zend_Feed 的项目实际应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人脸识别-入门学习
- 下一篇: 不知道为什么IList.Contains