PHP调用超过1个推文

时间:2013-08-28 18:42:05

标签: php api loops twitter foreach

我有这个代码根据计数值创建一个推文数组(当前设置为5)但是,当我尝试显示推文时,除了单词Array重复5次之外什么都没有(而不是实际的推文) ,任何人都可以帮我解决我做错的事吗?

顺便说一句,如果我将计数更改为1并且只是回显变量$ tweet,我会正确显示最新的推文。

function get_tweet() {

require 'parts/tmhOAuth.php';
require 'parts/tmhUtilities.php';

$tmhOAuth = new tmhOAuth(array(
 'consumer_key' => 'taken out for security purposes',
 'consumer_secret' => 'taken out for security purposes',
 'user_token' => 'taken out for security purposes',
 'user_secret' => 'taken out for security purposes',
 'curl_ssl_verifypeer' => false
));

$code = $tmhOAuth->request('GET', $tmhOAuth->url('1.1/statuses/user_timeline'), array(
'screen_name' => 'designernewsbot',
'count' => '5'));

$response = $tmhOAuth->response['response'];
$tweets = json_decode($response, true);

// This is to create links in my webpage if links are specified in the tweet
$tweet = $tweets[0]['text'];
$tweet = preg_replace("/([\w]+\:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/", "<a target=\"_blank\" href=\"$1\">$1</a>", $tweet);
$tweet = preg_replace("/#([A-Za-z0-9\/\.]*)/", "<a target=\"_new\" href=\"http://twitter.com/search?q=$1\">#$1</a>", $tweet);
$tweet = preg_replace("/@([A-Za-z0-9\/\.]*)/", "<a href=\"http://www.twitter.com/$1\">@$1</a>", $tweet);

foreach($tweets as $tweet):

    echo $tweet;

endforeach;


}

1 个答案:

答案 0 :(得分:1)

问题出在您的foreach循环中。您正在尝试在循环内打印$echo,这是一个数组。因此,您会收到Array to string conversion错误。

在这种情况下,for循环似乎更合适:

for ($i=0; $i < count($tweets); $i++) { 
    echo $tweets[$i]['text']."\n";
}

<强>更新

要显示推文中的链接,您可以这样做:

for ($i=0; $i < count($tweets); $i++) { 
    //echo $tweets[$i]['text']."\n";
    $var = preg_replace("/([\w]+\:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/", "<a target=\"_blank\" href=\"$1\">$1</a>", $tweets[$i]['text']);
    $var = preg_replace("/#([A-Za-z0-9\/\.]*)/", "<a target=\"_new\" href=\"http://twitter.com/search?q=$1\">#$1</a>", $var);
    $var = preg_replace("/@([A-Za-z0-9\/\.]*)/", "<a href=\"http://www.twitter.com/$1\">@$1</a>", $var);
    echo $var."\n";
}

我测试了这个并且它有效。希望这有帮助!