我在使用 PHP 生成有效的 xml 文件(用于 rss 提要)时遇到问题。问题是:没有空字符,也没有换行符或制表符,但 rss 阅读器(在我的情况下是 Safari)会引发错误:
自卫队
我的 PHP 代码是:
<?php
header("Content-Type: application/rss+xml");
if(!isset($_GET['searchQuery']) || $_GET['searchQuery'] == "")
{
include_once './session_ajax.php';
include("./include.php");
require_once("./classes/myclass/myclass.class.php");
$gmap_ajax = new myclass();
}
$query=sql_query("SELECT item_query, item_date, item_country FROM items WHERE 1 GROUP BY item_query ORDER BY item_id LIMIT 20",1);
$xml = "\n<rss version=\"2.0\">\n";
$xml .= "\t<channel>\n\t\t<title>myClass.com RSS Feed</title>\n\t\t<link>"._siteurl."feed.xml</link>\n\t\t<description>myClass.com is the largest...</description>\n\t\t<language>en-en</language>\n\t\t<pubDate>".date("r")."</pubDate>\n";
while($row=sql_fetch_array($query,1))
{
$date = date("Y-m-d", $row['item_date']);
$item_query2 = $row['item_query'];
$item_query = str_replace(" ", "+", $row['item_query']);
$xml .= "\t\t<item>\n\t\t\t<title>".$item_query2."</title>\n\t\t\t<link>"._siteurl."/".$item_query."/".$row['item_country']."</link>\n\t\t\t<description><![CDATA[Here is some more description]]></description>\n\t\t\t<pubDate>".date("r")."</pubDate>\n\t\t</item>\n";
}
$xml .= "\t</channel>\n</rss>";
echo trim("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
echo $xml;
?>
在 PHP 文件中,在 <?php 标记之前没有空格或其他任何内容,在 ?> 标记之后也没有任何内容......
我使用 Adobe CS5 作为编辑器。
在 Safari 以及我发现的每个在线验证器中,我都会收到此错误:
error on line 1 at column 6: XML declaration allowed only at the start of the document
问题是,我可以看到源代码中的空白区域,但错误位于 <?xml 标记的“l”处。
有没有人遇到过这个问题并且有一个想法或只是提示解决这个问题的正确方向?
编辑:
我也试过用Noteped++和Ultraedit32打开并保存,然后上传到服务器......同样的问题......