我正在尝试使用PHP实现RSS提要,据我所知它应该正常工作,就像您查看页面的源代码一样,您会看到应该输出到RSS提要的XML(http: //www.mattlewis.org.uk/web/rss.php)
以下是该页面的代码:
header("Content-Type: application/xml; charset=ISO-8859-1");
include 'includes/connection.php';
print '<?xml version="1.0" encoding="UTF-8"?>';
print '<?xml-stylesheet type="text/xsl" href="rssXSLT.xsl"?>';
print '<rss version="2.0">
<channel>
<title>FuseArt News</title>
<description>Welcome to our RSS news feed!</description>';
$query = "SELECT * FROM fuseArt_News";
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
while ($row = mysql_fetch_array($result))
{
$_xml .="<news_item>";
$_xml .="<title>" . $row['Title'] . "</title>";
$_xml .="<date>" . $row['Date'] . "</date>";
$_xml .="<article>" . $row['Article'] . "</article>";
$_xml .="</news_item>";
print $_xml;
}
print '</channel>
</rss>';
任何人都有任何关于它为什么不输出的想法?
由于
答案 0 :(得分:1)
您的文档是否符合RSS2标准? 我的意思是,你使用过的那些标签是有效的RSS2标签吗? 我建议您切换到这种更常见的语法:http://www.petefreitag.com/item/465.cfm
让我知道它是否有效。它总是对我有用。
答案 1 :(得分:1)
您的RSS文档中所需元素的名称错误。它应该是<item>
(没有<news_item>
),<description>
(不是<article>
)和<pubDate>
(不是<date>
)。不幸的是,还有日期,您必须使用旧式RFC822系列格式(“Mon,01 Jan 00 00:00:00 GMT”),而不是您目前使用的ISO-8601格式。
此外,您的字符集不匹配,您需要在注入XML的每个字符串值(例如htmlspecialchars()
)上调用$row['Title']
(对于XML也可以),否则需要stray { {1}}和<
字符会完全破坏您的Feed。如果&
是纯文本而不是HTML标记,则需要再次对其进行HTML转义(双 - $news['Article']
,一次用于文本到HTML,一次用于HTML到HTML功能于XML)。
无论如何,为什么所有htmlspecialchars()
? PHP是一种模板语言,您也可以将它用于模板化:
$_xml
答案 2 :(得分:0)
正如Pekka所说,你想确保你的字符集是一样的,我建议你在两者上使用UTF-8。我无法理解为什么这样做不会提供数据库中的数据是正确的。
一个观察结果是Id确保您将print $_xml;
放在while循环之外或将$_xml ="";
放在循环的开头。原因在于XMl每次都会不断添加循环,然后您反复打印整个内容,从而复制数据。