谷歌博主帖子 GUID 的格式是什么?PHP / CodeIgniter / SimplePie.


What is the format of a Google blogger post GUID? PHP / CodeIgniter / SimplePie

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

问题 1:

我希望能够在一页上使用 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 个提要的单独引用。

问题 1

您不应依赖 GUID 是某种格式,也不应依赖它是有效的 URL(除非 isPermalink 属性设置为 true - 省略应该意味着true,但情况并非总是如此(。

最好的办法是简单地对 GUID 进行哈希处理。如果你想让SimplePie为你做到这一点,只需使用$item->get_id(true)

问题2

如果您只尝试使用一个源,则应该只将该源传递到 SimplePie 中,而不是使用重张进纸技术。(将来我们可能会引入一个独立于SimplePieSimplePie_Feed类,允许您单独循环每个提要,但这尚不存在。

这可能会让你感兴趣 雅虎的管道

管道是一种强大的组合工具,用于聚合、操作和 来自网络周围的混搭内容。