2011-06-20 51 views
4

为了让我在最后的PHP鸣叫我用这个代码:获得最后的鸣叫与PHP

function getTweets($tweetsToDisplay, $user_id) { 

$twitterrequest = 'http://api.twitter.com/1/statuses/user_timeline.json?user_id=' . $user_id . '&include_rts=true&count=' . $tweetsToDisplay; 
$twitterci = curl_init($twitterrequest); 
curl_setopt($twitterci, CURLOPT_RETURNTRANSFER, TRUE); 
$twitterinput = curl_exec($twitterci); 
curl_close($twitterci); 
return ($twitterinput); 

} 

$user_id = '99999999'; 
$var = json_decode(getTweets(1, $user_id)); 
$txt = $var[0]->text; 
$txt = preg_replace('%(https?://)[^\s]*%', '$1...', $txt); 
echo $txt; 

工作正常,但我想要得到的日期,以及。如何提取它?

回答

1
<?php 
$date = $var[0]->created_at; 

这应该工作!

1

将此代码添加到您的代码底部。

$time = $var[0]->created_at; 
echo $time; 
7

我希望下面的帮助你的代码。

function getTimeline($count, $username) { 
    $url = 'http://api.twitter.com/1/statuses/user_timeline.json?screen_name='.$username.'&count=.'$count; 
    $tweets = json_decode(file_get_contents($url),TRUE); 

    return $tweets; 
} 
+0

这个代码有个bug,也不再支持V1 API –

+0

Bug不存在,因为''回答于2011年6月20日在20:23' PS但是这段代码真的不起作用。 – NiLL

2

你可以试试我创建的这个简单的PHP函数,以便轻松捕获最新的推文(不需要API认证)。必须优化:)

function getTweets($user, $count) { 
    $datas = file_get_contents('https://twitter.com/'.$user); 

    preg_match_all('/<p class="js-tweet-text tweet-text">(.*?)<\/p>/', $datas, $matchetweets); 
    $matchetweets[1] = preg_replace('/<s>(.?)<\/s>/', '$1', $matchetweets[1]); 
    $matchetweets[1] = preg_replace('/(class|dir|rel|data-expanded-url|data-pre-embedded|data-query-source)="(.*?)"/', '', $matchetweets[1]); 
    $matchetweets[1] = preg_replace('!\s+!', ' ', $matchetweets[1]); 

    for ($i = 1; $i <= $count; $i++) { 
     echo '<li>'.$matchetweets[1][$i].'</li>'."\n"; 
    } 
}; 

使用

echo getTweets('nasa', 3); 

更新(2014年10):

这个版本是过时的和不工作了。这是一个更新的PHP代码,可以轻松解析推文。

function getTweets($user, $count) { 
    $datas = file_get_contents('https://mobile.twitter.com/'.$user); 

    preg_match_all('/<div class="tweet-text" data-id="\d*">(.*?)<\/div>/', $datas, $matchetweets); 
    $matchetweets[1] = preg_replace('/<div class="dir-ltr" dir="ltr">/', '', $matchetweets[1]); 

    for ($i = 1; $i <= $count; $i++) { 
     echo '<li>'.$matchetweets[1][$i].'</li>'."\n"; 
    } 
}; 

UPDATE(二○一五年五月三十〇日):

function getTweets($user, $count) { 
    $datas = file_get_contents('https://mobile.twitter.com/'.$user); 

    preg_match_all('/<div class="tweet-text" data-id="\d*">(.*?)<\/div>/s', $datas, $matchetweets, PREG_SET_ORDER); 

    for ($i = 1; $i <= $count; $i++) { 
     $matchetweets[$i][0] = preg_replace('/<div class="dir-ltr" dir="ltr">/', '', $matchetweets[$i][0]); 
     $matchetweets[$i][0] = preg_replace('/\s+/', ' ', $matchetweets[$i][0]); 
     $matchetweets[$i][0] = str_replace('"> ', '">', $matchetweets[$i][0]); 

     echo '<li>'.$matchetweets[$i][0].'</li>'."\n"; 
    } 
}; 

用途不改变。最少1条推文,最多20条推文。

+0

由于某种原因,这并没有得到最新的推文。你有解决这个问题吗? – Daan

+0

没关系,我发现它..不得不将for循环中的起始值从1更改为0 – Daan