我一直在写一个简单的PHP脚本,它应该从MySQL数据库生成一个RSS提要提取数据。
<?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脚本生成的不需要的空行之后,我认为这是它不起作用的原因。我说的对吗?我怎么解它?谢谢。
您的问题是标题元素中的–
实体在xml中无效(这是一个html定义的实体);使用"-"或使用十进制版本:‒
.
另外,您需要将channel
和rss
结束标记放在while循环之外。
要去掉第一个空白行,只需替换
echo "
<?xml version="1.0" encoding="iso-8859-1"?>
[...]
echo "<?xml version="1.0" encoding="iso-8859-1"?>
[...]