自定义rss feed突然不再起作用了

时间:2010-04-19 06:23:24

标签: php rss feed

我只是不明白发生了什么,我几个月没有改变任何东西,但现在突然rss feed不再起作用了。

我使用以下代码创建一个php文件:

header('Content-type: text/xml'); 
include("config/config.inc.php");

    $result = mysqli_query($link, "SELECT * FROM tutorials ORDER BY tutorial_id DESC LIMIT 50");
?>
<rss version="2.0">
    <channel>
         <title>CMS tutorial site</title>
         <description>Bringing you the best CMS tutorials from the web</description>
         <link>http://cmstutorials.org</link>
        <?php 
        while($row = mysqli_fetch_object($result))
        {
            $user = mysqli_fetch_object(mysqli_query($link, "SELECT * FROM user_extra WHERE userid=".$row->user_id.""));
            ?>
            <item>
                <title><?php echo $row->title; ?></title>
                <author><?php echo $user->username; ?></author>
                <description><?php echo $row->description; ?></description>
                <pubDate><?php echo $row->date; ?></pubDate>
                <link>http://cmstutorials.org/view_tutorial.php?tutorial_id=<?php echo $row->tutorial_id; ?></link>
            </item>
            <?php
        }
        ?>
    </channel>
</rss>

我通过在phpmyadmin中执行它来检查查询并且它有效,不会给出任何错误。当我删除标题内容类型和rss标记时,它将打印出查询中的每一行,但Feed不会显示任何内容

这是Feed [{3}}(或http://cmstutorials.org/rss

的链接

2 个答案:

答案 0 :(得分:4)

有趣的是,IE8是一个给出详细错误消息的消息,其中Firefox没有说什么改变。它说“由于错误而无法显示此Feed”,并指向第229行第32行。

<description>We 

这是编码问题的99.9999%。 (验证器抱怨非UTF-8字符。)很可能,您的数据库内容存储在与utf-8不同的字符集中。

您将通过validator获得更详细的信息。

答案 1 :(得分:1)

您的文件是有效的UTF-8,但不是有效的XML。我认为您可能需要通过htmlentities函数传递所有数据。

 <title><?php echo htmlentities($row->title,ENT_QUOTES,"utf-8"); ?></title>  
 <author><?php echo htmlentities($row->username,ENT_QUOTES,"utf-8"); ?></author>  
 <description><?php echo htmlentities($row->description,ENT_QUOTES,"utf-8"); ?></description>  
 <pubDate><?php echo htmlentities($row->date,ENT_QUOTES,"utf-8"); ?></pubDate>  

如果不起作用,请尝试将“utf-8”更改为“cp1252”或“iso-8859-1”等其他编码。