1 编写RSS类
<?php
class Rss
{
    public $title;          // 频道的标题
    public $link;           // 频道的链接
    public $description;    // 频道的描述
    public $language;       // 频道的语言
    public $encoding;       // xml编码
    public $rss_url;        // rss地址
    /**
     * 初始化
     * @param string $title 频道标题
     * @param string $link 频道链接
     * @param string $description 频道描述
     * @param string $language 频道语言
     * @param string $encoding xml编码
     * @param string $rss_url rss地址
    */
    public function __construct($title, $link, $description, $language, $encoding, $rss_url)
    {
        $this->title       = $title;
        $this->link        = $link;
        $this->description = $description;
        $this->language    = $language;
        $this->encoding    = $encoding;
        $this->rss_url     = $rss_url;
    }
    /**
     * 创建RSS文件内容
     * @param array $items 文章内容
     * return string rss字符串内容
    */
    public function createRss($items)
    {
        // 获取头部信息
        $header  = $this->getHeader();
        // 获取内容信息
        $channel = $this->getChannel();
        $channel = str_replace('<chanel>', $channel, $header);
        // 获取文章信息
        $items   = $this->getItems($items);
        return str_replace('<item>', $items, $channel);
    }
    /**
     * 获取item信息
     * @param array $articles 文章内容,二维数组,格式[['title' => '', 'link' => '', 'description' => '', 'pubDate' => '', 'guid' => ''],...]
     * return string
    */
    public function getItems($articles = [])
    {
        $items = "";
        foreach ($articles as $k => $v) {
            $items .= "\t\t".'<item>'."\n";
            $items .= "\t\t\t".'<title>'.$v['title'].'</title>'."\n";
            $items .= "\t\t\t".'<link>'.$v['link'].'</link>'."\n";
            $items .= "\t\t\t".'<description>'.$v['description'].'</description>'."\n";
            $items .= "\t\t\t".'<pubDate>'.$this->getUtcTime($v['pubDate']).'</pubDate>'."\n";
            $items .= "\t\t\t".'<guid>'.$v['guid'].'</guid>'."\n";
            $items .= "\t\t".'</item>'."\n";
        }
        return $items;
    }
    // 获取频道信息
    public function getChannel()
    {
        $channel  = "\t".'<channel>'."\n";
        $channel .= "\t\t".'<title>'.$this->title.'</title>'."\n";
        $channel .= "\t\t".'<link>'.$this->link.'</link>'."\n";
        $channel .= "\t\t".'<description>'.$this->description.'</description>'."\n";
        $channel .= "\t\t".'<language>'.$this->language.'</language>'."\n";
        $channel .= "\t\t".'<atom:link href="'.$this->rss_url.'" rel="self" type="application/rss+xml" />'."\n";
        $channel .= "\t\t".'<item>'."\n";
        $channel .= "\t".'</channel>';
        return $channel;
    }
    // 获取头部信息
    public function getHeader()
    {
        $header  = '<?xml version="1.0" encoding="'.$this->encoding.'"?>'."\n";
        $header .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">'."\n".'<chanel>'."\n".'</rss>';
        return $header;
    }
    /**
     * 获取UTC时间
     * @param string $datetime 日期时间,格式:2024-01-12 16:45:30
     * return string 时间,格式如:Wed, 03 Jan 2024 00:32:16 +0000
    */
    public function getUtcTime($datetime)
    {
        $startUtc   = date('c', strtotime($datetime));
        $dateObject = new \DateTime($startUtc);
        $dateObject->setTimezone(new \DateTimeZone('UTC'));
        return $dateObject->format(\DateTime::RFC1123);
    }
}2 使用RSS类
// 使用案例
$title          = '测试标题';
$link           = 'https://www.cyanhui.com';
$description    = '描述内容';
$language       = 'en-US';
$encoding       = 'UTF-8';
$rss_url        = 'https://www.cyanhui.com/test2.php';
$rss = new Rss($title, $link, $description, $language, $encoding, $rss_url);
$items          = [
    ['title' => '文章1', 'link' => 'https://www.cyanhui.com/detail/1.html', 'description' => '文章1描述', 'pubDate' => '2024-01-12 17:45:23', 'guid' => 'https://www.cyanhui.com/detail/1.html'],
    ['title' => '文章2', 'link' => 'https://www.cyanhui.com/detail/2.html', 'description' => '文章2描述', 'pubDate' => '2024-01-12 17:23:23', 'guid' => 'https://www.cyanhui.com/detail/2.html']
];
header('Content-Type: application/rss+xml; charset=UTF-8');
echo $rss->createRss($items);3 RSS检测
检测地址:https://www.feedvalidator.org/

4 测试结果

 智享笔记
								    智享笔记								 
                             
                             
                             
                            