为什么Twitter的1.1 API不包括我的推文中的实体?

时间:2013-06-13 16:00:01

标签: php api twitter

如果我在这里缺少一些基本的东西,请原谅我的无知,但是在将他们的Twitter API调用更新为1.1之后,我正试图将最后一条推文打印到客户的主页,我能够做到这一点,但它不包括实体似乎默认情况下。它会抛出纯文本而没有围绕主题标签和URL的链接。我在这里错过了什么吗?

require_once 'twitteroauth.php';
 $twitterConnection = new TwitterOAuth(
                'XXX',  // Consumer Key
                'XXX',      // Consumer secret
                'XXX',       // Access token
                'XXX'       // Access token secret
                );
 $twitterData = $twitterConnection->get(
                  'statuses/user_timeline',
                  array(
                    'screen_name'     => 'XXX',
                    'count'           => 1,
                    'exclude_replies' => true
                  )
                );
 if($twitterConnection->http_code != 200)
 {
      $twitterData = get_transient($transName);
 }
 // Save our new transient.
 set_transient($transName, $twitterData, 60 * $cacheTime);

 foreach($twitterData as $tweets)
{
    return $tweets->text;
}

1 个答案:

答案 0 :(得分:0)

主要是因为这是你在你写的return $tweets->text;

这一行告诉它的

text几乎只是推文的字符串值。如果您希望链接的主题标签,则必须迭代$tweets->hashtags的值。它是一个对象数组,其中$tweets->hastags[0]->text是推文中存在的第一个#标签的文本值,而$tweets->hashtags[0]->indices返回一个指定位置(开始,停止)的[9,15]形式的数组标签中的#标签及其文本值。

这是一些伪代码,用于说明如何处理您的请求:

foreach($twitterData as $tweet) {
    $text = $tweet->text;
    foreach($tweet->hashtag as $hashtag) {
        $searchString = $hashtag->text;
        $text = linkify($text,$searchString,$hashtag->indices);
    }
}

linkify只需添加类似于<a href="http://twitter.com/search?q='$searchString&src=hash'"></a>的内容,具体取决于您希望如何处理链接,分别位于index [0]和indices [1]位置。

当然,您可以说使用正则表达式来过滤使用#(a-z_)\w+进行过滤会更加简单,如此处所述https://stackoverflow.com/a/15540967/1882885,将其替换为与我上面所写的类似形式的网址

我希望这会有所帮助。