【问题标题】:Opening and Ending Tag mismatch error while creating Rss创建 Rss 时出现打开和结束标签不匹配错误
【发布时间】:2015-08-28 03:15:45
【问题描述】:

我是 php 新手,想帮助生成 rss 提要。我有一个名称为“test123”的数据库,其中包含 ID、名称、地址、名称和文本字段。这是我的 RSS 源代码`

<?php

function connect() {
    return new PDO('mysql:host=localhost;dbname=test123', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}

$pdo = connect();

// posts *******************************
$sql = 'SELECT * FROM form ORDER BY id DESC';
$query = $pdo->prepare($sql);
$query->execute();
$rs_post = $query->fetchAll();

// The XML structure
$data = '<?xml version="1.0" encoding="UTF-8" ?>';
$data .= '<rss version="2.0">';
$data .= '<channel>';
$data .= '<title>PACRA Rss Feed</title>';
$data .= '<link>http://www.pacra.com</link>';
$data .= '<description>Pacra Pakistan</description>';
foreach ($rs_post as $row) {
    $data .= '<item>';
    $data .= '<title>'.$row['Name'].'</title>';
    $data .= '<link>'.$row['Address'].'</link>';
    $data .= '<description>'.$row['Text'].'</description>';
    $data .= '</item>';
}
$data .= '</channel>';
$data .= '</rss> ';

header('Content-Type: application/xml');
echo $data;
?>`

问题是,当我运行该代码时,它会显示一条错误消息“开始和结束标签不匹配” 这是错误的图像 Image Link

【问题讨论】:

    标签: php rss


    【解决方案1】:

    它可能是标题,我在 PHP 生成的 RSS 提要中使用以下内容:header('Content-type: text/xml; charset=UTF-8');

    然后使用CDATA 转义您的&lt;title&gt;&lt;description&gt;

    您是否使用 RSS 验证器验证您的提要? https://validator.w3.org/feed/

    我的结构也有点不同:

         <?xml version="1.0" ?>
         <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
            <channel>
                <atom:link href="http://www.website.com" rel="self" type="application/rss+xml" />
                <title>RSS Title</title> 
                <link>http://www.website.com</link> 
                <description>Description</description>
                <language>en</language>
                <managingEditor>Name</managingEditor>
                <webMaster>mail@mail.com</webMaster>
                <item>
                    <pubDate>Wed, 02 Oct 2015 15:00:00 +0200</pubDate>
                    <title><![CDATA[Here the title]]></title>
                    <link>http://www.website.com/page</link>
                    <guid>http://www.website.com/page</guid>        
                    <description><![CDATA[Here the content]]></description>
                </item>
                <item>
                    <pubDate>Wed, 02 Oct 2015 15:00:00 +0200</pubDate>
                    <title><![CDATA[Here the title2]]></title>
                    <link>http://www.website.com/page2</link>
                    <guid>http://www.website.com/page2</guid>       
                    <description><![CDATA[Here the content2]]></description>
                </item>
            </channel>
        </rss>
    

    【讨论】:

    • 你能举个清楚的例子吗?它看起来与我的代码完全不同。我也改变了 header('Content-type: text/xml; charset=UTF-8');但它也无法正常工作并显示相同的错误。
    • 嗨@Sunny,这是一个非常清楚的例子!我不是在重写你的代码,而是在提示你可以自己重写代码的方式。
    • 您可以尝试先制作一个静态(虚拟)版本的 Feed,然后看看它是否有效。我还用CDATA 部分的另一个提示编辑了我的答案。
    猜你喜欢
    • 2011-11-02
    • 2012-04-01
    • 2012-09-29
    • 1970-01-01
    • 2016-08-27
    • 2014-10-19
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    相关资源
    最近更新 更多