RSS(Really Simple Syndication)讓用戶無需打開網站即可獲取最新內容更新。本文提供一個功能完整、可直接生產使用的 PHP RSS 生成類庫,支援 RSS 0.91 / 1.0 / 2.0 多格式輸出,含緩存、樣式表、CDATA 等特性。
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>站點標題</title>
<link>https://www.example.com/</link>
<description>站點描述</description>
<item>
<title>文章標題</title>
<link>文章鏈接</link>
<description>文章摘要</description>
</item>
</channel>
</rss>
FeedItem:單條項目(標題、鏈接、描述、作者、分類、GUID、發布時間等)FeedImage:頻道圖片(標題、URL、鏈接、尺寸)FeedCreator:基礎生成器(編碼、樣式表、緩存、文件保存)RSSCreator091 / RSSCreator10 / RSSCreator20:具體格式實現UniversalFeedCreator:統一入口,自動選擇格式FeedDate:日期解析與格式化(RFC822、ISO8601)<?php
header('Content-Type: text/xml; charset=utf-8');
// 1. 連接數據庫 (示例用舊 mysql_* 函數,實際請用 PDO/MySQLi)
$db = mysql_connect('127.0.0.1', 'root', '123456');
mysql_query("SET NAMES utf8");
mysql_select_db('dbname', $db);
$res = mysql_query('SELECT * FROM article ORDER BY add_time DESC LIMIT 10', $db);
// 2. 創建通用生成器
$rss = new UniversalFeedCreator();
$rss->title = "頁面標題";
$rss->link = "https://www.example.com/";
$rss->description = "RSS 訂閱描述";
// 3. 遍歷數據添加項目
while ($row = mysql_fetch_assoc($res)) {
$item = new FeedItem();
$item->title = $row['subject'];
$item->link = 'https://www.example.com/article/' . $row['id'];
$item->description = $row['description'];
$item->date = $row['add_time']; // 可被 FeedDate 解析
$rss->addItem($item);
}
mysql_close($db);
// 4. 直接輸出或保存文件
$rss->saveFeed("RSS2.0", "rss.xml"); // 參數:格式、文件名、是否直接輸出
?>
// 使用緩存,3600 秒內直接讀取文件不再查庫
$rss->useCached("RSS2.0", "rss.xml", 3600);
$rss->additionalElements = array(
'webMaster' => 'admin@example.com',
'ttl' => '60'
);
$item->additionalElements = array('author' => '作者名');
FeedItem::descriptionHtmlSyndicated = true 時自動包裹 <![CDATA[ ... ]]>,避免 XML 解析錯誤;否則自動轉義實體並可設定截斷長度 descriptionTruncSize。
includes/ 或通過 Composer 自動載入rss.php 並配置 Web 服務器重寫規則(如 /feed → /rss.php)<head> 添加自動發現鏈接:<link rel="alternate" type="application/rss+xml" title="站點 RSS" href="/feed" />此類庫代碼緊湊、無外部依賴,適合快速集成到任何 PHP 項目中提供標準化訂閱服務。