0

我正在尝试在我的网站上创建显示 RSS 谷歌博客帖子的页面。我正在使用 PHP、CodeIgniter 和 SimplePie 来解析 Google 提要。

问题一:

我希望能够在一个页面上使用 guid 创建一个链接,然后在下一页上显示个人博客文章。所以我有这样的事情:

http://mysite.co.uk/technology/blog_post/tag:blogger.com,1999:blog-6168323340908483477.post-1651486241197422269

这不起作用,因为 guid 对 url 无效并且看起来很乱(可以使用 url_encode 但不想这样做)。我想像这样得到它:

http://mysite.co.uk/technology/blog_post/6168323340908483477/1651486241197422269

为此,我需要了解 guid 的格式。这是一个json对象吗?如果是这样,我该如何拆分?我可以使用 explode() 来拆分它,但我想有更好的方法。

问题 2:

我可以在我的 CodeIgniter / SimplePie 网站上显示提要,但我不能轻松地显示单个提要。这是我目前的代码(未经测试):

  foreach($feeds as $k => $item):
    if(  $item->get_id()==$this->uri->segment(3) ): //Does id of post match id passed in?
    ?>
      <h1 id="main-heading"><?=$page_title?></h1>
      <div class="blog-date"><?=$item->get_date()?></div>
      <h3><a href="<?=$item->get_link()?>"><?=$item->get_title()?></a></h3>
      <div class="blog-desc"><?=$item->get_description()?></div>
    <?
    break;//End as we only want to display one post, need a better way of doing this.
    endif;
  endforeach;

显然,这是一个循环,而不是对 1 个提要的单独引用。

4

2 回答 2

1

问题 1

您不应将 GUID 视为某种格式,也不应将其视为有效的 URL(除非该isPermalink属性设置为true- 省略应该暗示true,但并非总是如此)。

最好的办法是简单地散列 GUID。如果您希望 SimplePie 为您执行此操作,只需使用$item->get_id(true)

问题2

如果您只尝试使用一个提要,那么您应该只将那个传递给 SimplePie,而不是使用多提要技术。(将来我们可能会引入一个SimplePie_Feed单独的类SimplePie,允许您单独循环每个提要,但这还不存在。)

于 2012-05-13T01:39:47.333 回答
-1

这可能会让您对 Yahoo 管道感兴趣

Pipes 是一个强大的组合工具,用于聚合、操作和混搭来自网络的内容。

于 2012-05-10T19:05:28.963 回答