我一直在编写一个简单的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 – I migliori setting per Dreambox! – 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脚本生成不需要的空行之后出现,我认为这是它无效的原因。我对吗?我该如何解决?感谢。
答案 0 :(得分:2)
你的问题是title元素中的–
实体在xml中无效(它是一个html定义的实体);只需使用“ - ”或使用十进制版本:‒
。
此外,您需要将channel
和rss
结束标记放在while循环之外。
要删除第一个空行,只需替换
echo "
<?xml version="1.0" encoding="iso-8859-1"?>
[...]
与
echo "<?xml version="1.0" encoding="iso-8859-1"?>
[...]