2011-08-04 38 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

相關問題