0

如果我在这里遗漏了一些基本的东西,请原谅我的无知,但我试图在将他们的 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;
}
4

1 回答 1

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);
    }
}

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

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

我希望这有帮助。

于 2013-06-14T08:21:17.500 回答