用PHP问题显示RSS

时间:2010-11-11 12:04:15

标签: php xml rss

我正在尝试使用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>';

任何人都有任何关于它为什么不输出的想法?

由于

3 个答案:

答案 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每次都会不断添加循环,然后您反复打印整个内容,从而复制数据。