2011-08-04 36 views
0

我写了一个简单的PHP脚本,它应该生成一个RSS提取来自MySQL数据库的数据。RSS Feed不起作用:<?xml version =“1.0”encoding =“iso-8859-1”?>

<?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脚本我想这是为什么它不工作的原因产生不必要的空行之后。我对吗?我该如何解决它?谢谢。

+0

什么是数据库的字符编码? – Mikaveli

+0

我也试过utf-8,没有任何改变。 – Gabriele

+0

为什么不在<?xml版本之前删除换行符? –

回答

2

您的问题是标题元素中的&ndash;实体,它在xml中无效(它是一个html定义的实体);只需使用“ - ”或使用小数版本:&#8210;

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

为了摆脱第一个空行的,只需更换

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

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

我改正了它,但是问题仍然存在。 – Gabriele

+0

有什么问题?你的项目中可能有其他html实体 - 标题标记 –

+0

I我很确定问题出在<?xml version =“1.0”encoding =“iso-8859-1”?> line。我读了由PHP脚本引起的空行可能会导致这种情况。我试图ob_clean() – Gabriele

相关问题