我有这样的代码,它根据计数值(当前设置为5)创建一个tweet数组。然而,当我试图显示tweet时,我只得到重复了5次的单词array(而不是实际的tweet),有人能帮我解决我做错了什么吗?
顺便说一句,如果我将计数更改为1,并只回显变量$tweet,我将正确显示最新的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;
}
问题在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";
}
我已经测试过了,它有效。希望这能有所帮助!