2011-06-20 46 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