我有这个代码根据计数值创建一个推文数组(当前设置为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;
}
答案 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";
}
我测试了这个并且它有效。希望这有帮助!