Получение последнего твита с PHP - PullRequest
4 голосов
/ 21 июня 2011

Чтобы получить мой последний твит в 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;

Работает нормально, но я хочу также получить дату.Как извлечь это?

Ответы [ 5 ]

7 голосов
/ 21 июня 2011

Надеюсь, приведенный ниже код поможет вам.

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;
}
2 голосов
/ 13 сентября 2013

Вы можете попробовать эту простую функцию 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);

ОБНОВЛЕНИЕ (15.10.2014):

Эта версия устарела и больше не работает. Вот обновленный код 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";
    }
};

ОБНОВЛЕНИЕ (30.05.2015):

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 твитов.

1 голос
/ 21 июня 2011

Добавьте это в конец вашего кода.

$time = $var[0]->created_at;
echo $time;
1 голос
/ 21 июня 2011

На основании результатов Twitter API от http://dev.twitter.com/doc/get/statuses/user_timeline, представляется, что вы можете использовать created_at параметр.

У вас есть:

$txt = $var[0]->text;

Если это работает, тодобавить

$created = $vars[0]->created_at;

echo $txt;
echo "<span>".$created."</span>" ;
1 голос
/ 21 июня 2011
<?php
$date = $var[0]->created_at;

Это должно работать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...