使用 PHP 获取我最新的 Twitter 帖子
Posted
技术标签:
【中文标题】使用 PHP 获取我最新的 Twitter 帖子【英文标题】:Get my latest Twitter post with PHP 【发布时间】:2011-01-17 13:25:53 【问题描述】:我正在尝试创建一个简单的站点,该站点使用 php 和 Twitter API 来写出我在 Twitter 上的最新帖子。我找到了一个教程,向我展示了如何以 xml 格式获取我的时间线(或最近 20 个帖子),但不知道如何打印出 just 最新帖子和 just 它的文本(不是 xml/rss/etc 附带的时间、日期等)。
我的代码是这样的
<h2 id = "latest">
<?php
var $username='myusername';
var $password='mypassword';
var $responseInfo=array();
function latest_status($format='json',$id=null)
$request = 'http://twitter.com/statuses/user_timeline.'.$format;
if($id)
$postargs = "id=$id";
return $this->process($request,$postargs);
return $this->process($request);
echo latest_status("json");
?>
</h2>
它会返回这个:
["贡献者":null,"created_at":"星期二 2 月 16 日 19:56:08 +0000 2010","in_reply_to_user_id":null,"source":"API","favorited":false,"in_reply_to_status_id":null,"truncated":false,"user":"notifications":null,"profile_link_color": "0000ff","description":"","verified":false,"profile_background_tile":false,"created_at":"星期二 2 月 16 日 01:16:15 +0000 2010","profile_background_color":"9ae4e8","profile_image_url":"http://s.twimg.com/a/1265999168/images/default_profile_1_normal.png","time_zone":"夏威夷","profile_sidebar_fill_color":"e0ff92","followers_count":0,"screen_name":"whisperingweb" ,"lang":"en","friends_count":0,"profile_sidebar_border_color":"87bc44","statuses_count":2,"following":null,"protected":false,"favourites_count":1,"location" :"","姓名":"克里斯 Armstrong","contributors_enabled":false,"profile_text_color":"000000","id":114608397,"geo_enabled":true,"profile_background_image_url":"http://s.twimg.com/a/1265999168/images/themes/theme1/bg.png","utc_offset":-36000,"url": null,"in_reply_to_screen_name":null,"geo":null,"id":9199090048,"text":"某人 在你的 网站","收藏夹":false,"来源":"web","in_reply_to_user_id":null,"created_at":"星期二 2 月 16 日 18:50:21 +0000 2010","geo":null,"user":"verified":false,"description":"","notifications":false,"profile_text_color":"000000","screen_name":"whisperingweb"," profile_background_image_url":"http://s.twimg.com/a/1265999168/images/themes/theme1/bg.png","url":null,"profile_link_color":"0000ff","followers_count":0,"statuses_count":2,"profile_background_tile":false,"created_at":"星期二 2 月 16 日 01:16:15 +0000 2010","friends_count":0,"profile_background_color":"9ae4e8","contributors_enabled":false,"time_zone":"夏威夷","favourites_count":0,"profile_sidebar_fill_color":"e0ff92","protected":false ,"位置":"","姓名":"克里斯 Armstrong","lang":"en","geo_enabled":true,"profile_sidebar_border_color":"87bc44","id":114608397,"following":false,"utc_offset":-36000,"profile_image_url":"@ 987654324@","contributors":null,"in_reply_to_status_id":null,"id":9196705546,"in_reply_to_screen_name":null,"truncated":false,"text":"The 敏捷的棕狐跳过懒惰的人 狗"]
我对 php 很陌生,对 Twitter API 也很陌生,因此我将不胜感激任何帮助或建议。
编辑:已将示例从 xml 更改为 json
【问题讨论】:
您的代码中的$twitter
是什么?您是否使用现有的 Twitter 库来访问它? $this
指的是函数内部的什么(即类定义的其余部分在哪里)?该函数的输出是什么类型(检查var_dump
)。
啊,是的,对不起。我正在使用从这里获得的库brandontreb.com/…,我只是复制并粘贴了我认为相关的位。我应该通过删除 $twitter-> 来纠正我的问题,还是我会更好地显示整个库?
【参考方案1】:
请改用 format='json':json_decode($response)[0]['text']。
在这种情况下,请使用 JSON,因为它对 PHP 的内部数据类型有更自然的映射,这使得提取所需内容变得非常容易。您可以仍然使用 XML,但您必须迭代生成的结构,这相对复杂。
【讨论】:
JSON 比 XML 有什么好处? JSON 的解析速度比 XML 快 in php. 这是一个您可以直接访问的标准,无需关心解析数据(这在 xml 甚至更原始的 html 方面可能非常麻烦)。 好的,所以我不需要像使用 XML 那样为 JSON 提供额外的库吗?如果是这样,我如何直接解析 JSON? 下面是抛出一个语法错误,不知道你能看出问题在哪里吗?返回 json_decode($this->process($request))[0]['text'];错误是意外的'['【参考方案2】:这只是您的网络浏览器显示没有标签的 xml 文件的内容。您需要使用 xml 库(例如 simplexml、http://php.net/manual/en/book.simplexml.php)来获取您想要的信息。
编辑以反映 OP 变化
使用 json_decode 方法(参见http://www.php.net/manual/en/function.json-decode.php)。可以像数组一样访问输出。
还有其他问题,请使用 PHP 和 google 的文档(我通过 googleing "json in php" 获得了有关 json 的信息)。
【讨论】:
关于如何实现该库的任何提示?是否通过库来指定要显示的帖子及其中的哪些元素? 您需要使用 simplexml 库提供的功能(请参阅php.net/manual/en/simplexml.examples-basic.php 了解基本教程)并熟悉它。不过我同意 djc,使用 json 的可能性,它会让你省去很多眼泪。 好的,谢谢,我已将示例更改为 json 而不是 xml。我需要添加什么才能从 json 数据中选择最新的帖子?以上是关于使用 PHP 获取我最新的 Twitter 帖子的主要内容,如果未能解决你的问题,请参考以下文章