RSS Feed不起作用:<! - ?xml version =“1.0”encoding =“iso-8859-1”有问题? - >

时间:2011-08-04 09:24:20

标签: php mysql xml rss

我一直在编写一个简单的PHP脚本,它应该生成从MySQL数据库中提取数据的RSS Feed。

<?php
require("$_SERVER[DOCUMENT_ROOT]mysql.php");
$type = $_GET["type"];
$result = mysql_query("SELECT * FROM Setting WHERE Type = \"$type\"");
header("Content-Type: text/xml");
echo "
<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
<rss version=\"2.0\">
  <channel>
    <title>Vhannibal &ndash; I migliori setting per Dreambox! &ndash; Feed RSS</title>
    <link>http://www.vhannibal.net/</link>
    <description>".$type."</description>
";
while ($row = mysql_fetch_array($result))
{
    extract($row);
    echo "
    <item>
      <title>$row[Name]</title>
      <link>http://www.vhannibal.net/download_setting.php?id=$row[ID]</link>
      <description>".strftime("%e %b", $row["Date"])."</description>
    </item>
  </channel>
</rss>
";
}
?>

问题是<?xml version="1.0" encoding="iso-8859-1"?>在PHP脚本生成不需要的空行之后出现,我认为这是它无效的原因。我对吗?我该如何解决?感谢。

1 个答案:

答案 0 :(得分:2)

你的问题是title元素中的&ndash;实体在xml中无效(它是一个html定义的实体);只需使用“ - ”或使用十进制版本:&#8210;

此外,您需要将channelrss结束标记放在while循环之外。

要删除第一个空行,只需替换

   echo "
    <?xml version="1.0" encoding="iso-8859-1"?>
    [...]

   echo "<?xml version="1.0" encoding="iso-8859-1"?>
   [...]