无法在<item>标记中的rss Feed中添加链接或图像

时间:2016-05-13 12:03:39

标签: php mysql xml tags rss

我很感激一些帮助。我正在尝试为我的网站创建RSS提要。我有一半在工作,但我只是想要帮助另一半。我似乎无法添加标题链接,我似乎无法在标签中显示缩略图。有谁可以帮助我吗?

到目前为止,这是我的代码:

 <?php
DEFINE ('DB_USER', 'root');   
DEFINE ('DB_PASSWORD', '');   
DEFINE ('DB_HOST', 'localhost');   
DEFINE ('DB_NAME', 'testdb'); 

$connection = @mysql_connect(DB_HOST, DB_USER, DB_PASSWORD)
    or die('Could not connect to database');
mysql_select_db(DB_NAME)
    or die ('Could not select database');


$query = "SELECT teste.id, teste.title, teste.abstract, teste.body, teste.keywords, tesi.image FROM teste INNER JOIN tesi ON teste.title = tesi.title WHERE teste.title = tesi.title";
$result = mysql_query($query) or die ("Could not execute query");


$data = '<?xml version="1.0" encoding="UTF-8" ?>';
$data .= '<rss version="2.0">';
$data .= '<channel>';
$data .= '<title>Bang Premier</title>';
$data .= '<link>http://www.bangpremier.com</link>';
$data .= '<description>Entertainment News</description>';
 while($row = mysql_fetch_array($result)) {
    extract($row);
$data .= '<item>';
$data .= '<title>'.$row['title'].'</title>';
$data .= '<link>'.$row['image'].'</link>';
$data .= '<description>'.$row['abstract'].'</description>';
$data .= '</item>';
}
$data .= '</channel>';
$data .= '</rss> ';

header('Content-Type: application/xml');
echo $data;

?>

1 个答案:

答案 0 :(得分:0)

要调试错误,请查看生成的XML。例如,在浏览器中打开源视图。你应该看到类似的东西:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Bang Premier</title>
    <link>http://www.bangpremier.com</link>
    <description>Entertainment News</description>
    <item>
      <title>Some Title</title>
      <link>http://some.domain.tld/link</link>
      <description>Some content</description>
    </item>
  </channel>
</rss>

验证Feed是否格式正确,并包含数据。您问题中的代码会将image数据库字段作为链接插入。

为此,您应该使用htmlspecialchars()从数据库中转义值,或者甚至更好地使用像XML或XMLWriter这样的XML Api来生成输出。

RSS 2.0 feed items没有image元素 - 只有channel

您可以将其作为img内的description元素包含在其中:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <item>
      <title>Some Title</title>
      <link>http://some.domain.tld/link</link>
      <description>
        &lt;img src="http:/example.tld/images/thumbnail.png">
        &lt;br>
        Some content
      </description>
    </item>
  </channel>
</rss>

有些客户会编辑HTML,但可能会删除img

根据您的Feed和预期的客户Media-RSS也可以选择。