Php 自定义rss提要突然不再工作

Php 自定义rss提要突然不再工作,php,rss,feed,Php,Rss,Feed,我只是不明白发生了什么,我已经几个月没有对网站做任何更改了,但是现在突然rss提要不再工作了 我使用以下代码创建了一个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 ver

我只是不明白发生了什么,我已经几个月没有对网站做任何更改了,但是现在突然rss提要不再工作了

我使用以下代码创建了一个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的链接,有趣的是,IE8提供了一条详细的错误消息,Firefox没有说明任何更改。它说由于错误和指向第229行第32列,此提要无法显示

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


运行提要时,您将获得更详细的信息。

有趣的是,IE8提供了一条详细的错误消息,其中Firefox没有说明任何更改。它说由于错误和指向第229行第32列,此提要无法显示

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


通过运行提要,您将获得更详细的信息。

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

 <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。

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

 <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。

不,这是无效的utf-8,至少有一个字符被打断。另外,永远不要在XML输出上使用htmlentities。使用普通的UTF-8字符或将数据包装在CDATA标记中。感谢各位提供的提示。我将把我当前的站点转换成codeigniter框架,所以所有这些都应该得到修复。我使用了上面提供的代码,即使Pekka说它不推荐,因为它是一个初步修复,它不是有效的UTF-8,至少有一个字符被破坏。另外,永远不要在XML输出上使用htmlentities。使用普通的UTF-8字符或将数据包装在CDATA标记中。感谢各位提供的提示。我将把我当前的站点转换成codeigniter框架,所以所有这些都应该得到修复。我使用了上面提供的代码,即使Pekka说这不是推荐的,因为这是一个初步的修复哦,我从来没有想过在IE中寻找,但你所说的是100%可能的,因为我有编码问题->检查描述,有小正方形。我将数据库设置为utf8 unicode。我添加到数据库中的内容来自rss提要。我尝试将传入的rss提要重新编码为UTF8,但仍然存在一些问题。我将使用一些过滤器将特殊引号更改为正常的utf8标准引号。或者类似的东西嘿,rss验证器刚刚救了我的命。所以谢谢你和+1!!我总是使用html和css验证器,但从来没有意识到rss有一个验证器。哦,我从来没有想过要查看IE,但你说的是100%可能的,因为我有编码问题->检查描述,有小正方形。我将数据库设置为utf8 unicode。我添加到数据库中的内容来自rss提要。我尝试将传入的rss提要重新编码为UTF8,但仍然存在一些问题。我将使用一些过滤器将特殊引号更改为正常的utf8标准引号。或者类似的东西嘿,rss验证器刚刚救了我的命。所以谢谢你和+1!!我总是使用html和css验证器,但从未意识到rss有一个验证器。