【问题标题】:Unable to add links or images in rss feed in <item> tag无法在 <item> 标记的 rss 提要中添加链接或图像
【发布时间】:2016-09-09 15:02:43
【问题描述】:

我将不胜感激。我正在尝试为我的网站创建 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;

?>

【问题讨论】:

  • 你得到什么错误?
  • 要么图像和链接根本不显示,要么所有数据都消失,只显示频道名称和频道描述。 (没有具体错误)。它只是没有显示。

标签: php mysql xml tags rss


【解决方案1】:

要调试错误,请查看生成的 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>

验证提要是有效的格式良好的 XML 并包含数据。您问题中的代码将image 数据库字段作为链接插入。

为此,您应该使用 htmlspecialchars() 对数据库中的值进行转义,或者更好地使用 DOM 或 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

根据您的提要和预期的客户Media-RSS 也可能是一种选择。

【讨论】:

  • 您好,感谢您的帮助。我正在努力按照你所说的去做。你有什么方法可以添加到标题的链接(使用 php),我正在尝试,但它不起作用。这是我的代码:$data .= ''.'<a href="/default/index/tourl?u=PGEgaHJlZj0%3D" http: rel="nofollow" target="_blank">website.com/preem.php?id=</a>"'。 $row['id'].'"\">'.$row['title'].''.'';
  • 没有title 元素的内容是文本。但是,如果您将有效的 url 放入 link 元素中,RSS 客户端应该会读取它。
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 2012-01-08
  • 2014-07-01
  • 2013-03-07
  • 2010-10-25
  • 1970-01-01
  • 2015-11-03
  • 1970-01-01
相关资源
最近更新 更多