2009-12-30 52 views
1

我想在我的網站上顯示來自twitter的最近5或10個狀態。現在我正在使用以下代碼來獲取我的twitter狀態。Zend Framework:如何從twitter獲取我的狀態

public function getOrganizationsTwitterUpdates(){ 

    $twitter = new Zend_Service_Twitter('myusername', 'mypassword'); 
    $response = $twitter->status->userTimeline(); 
    return $response; 
} 

而且我必須按照上面的代碼進行響應。

Zend_Rest_Client_Result Object ([_sxml:protected] => SimpleXMLElement Object ([@attributes] => Array ([type] => array) [status] => Array ([0] => SimpleXMLElement Object ([created_at] => Wed Dec 30 11:02:13 +0000 2009 [id] => 7192975030 [text] => This is my 2nd tweet. [source] => web [truncated] => false [in_reply_to_status_id] => SimpleXMLElement Object () [in_reply_to_user_id] => SimpleXMLElement Object () [favorited] => false [in_reply_to_screen_name] => SimpleXMLElement Object () [user] => SimpleXMLElement Object ([id] => 100469557 [name] => naveed [screen_name] => naveedriksof [location] => SimpleXMLElement Object () [description] => SimpleXMLElement Object () [profile_image_url] => http://s.twimg.com/a/1262113883/images/default_profile_6_normal.png [url] => SimpleXMLElement Object () [protected] => false [followers_count] => 0 [profile_background_color] => 9ae4e8 [profile_text_color] => 000000 [profile_link_color] => 0000ff [profile_sidebar_fill_color] => e0ff92 [profile_sidebar_border_color] => 87bc44 [friends_count] => 0 [created_at] => Wed Dec 30 10:59:31 +0000 2009 [favourites_count] => 0 [utc_offset] => SimpleXMLElement Object () [time_zone] => SimpleXMLElement Object () [profile_background_image_url] => http://s.twimg.com/a/1262113883/images/themes/theme1/bg.png [profile_background_tile] => false [notifications] => false [geo_enabled] => false [verified] => false [following] => false [statuses_count] => 2) [geo] => SimpleXMLElement Object ()) [1] => SimpleXMLElement Object ([created_at] => Wed Dec 30 11:01:43 +0000 2009 [id] => 7192966364 [text] => This is my 1st tweet [source] => web [truncated] => false [in_reply_to_status_id] => SimpleXMLElement Object () [in_reply_to_user_id] => SimpleXMLElement Object () [favorited] => false [in_reply_to_screen_name] => SimpleXMLElement Object () [user] => SimpleXMLElement Object ([id] => 100469557 [name] => naveed [screen_name] => naveedriksof [location] => SimpleXMLElement Object () [description] => SimpleXMLElement Object () [profile_image_url] => http://s.twimg.com/a/1262113883/images/default_profile_6_normal.png [url] => SimpleXMLElement Object () [protected] => false [followers_count] => 0 [profile_background_color] => 9ae4e8 [profile_text_color] => 000000 [profile_link_color] => 0000ff [profile_sidebar_fill_color] => e0ff92 [profile_sidebar_border_color] => 87bc44 [friends_count] => 0 [created_at] => Wed Dec 30 10:59:31 +0000 2009 [favourites_count] => 0 [utc_offset] => SimpleXMLElement Object () [time_zone] => SimpleXMLElement Object () [profile_background_image_url] => http://s.twimg.com/a/1262113883/images/themes/theme1/bg.png [profile_background_tile] => false [notifications] => false [geo_enabled] => false [verified] => false [following] => false [statuses_count] => 1) [geo] => SimpleXMLElement Object ())))) 

我有2個問題:

Q1。如何將上面的對象轉換成數組。在上面的對象中,我可以看到我的兩個狀態,但是如何將我的狀態存儲到像這樣的變量中。

$firstStatus = "This is my first tweet"; 
$firstStatusTime = "4:30PM 12-12-09"; 
$secondStatus = "This is my second tweet"; 
$secondStatusTime = "9:30PM 12-12-09"; 

Q2。我可以在沒有我的密碼的情況下獲得我的所有狀態(因爲我們可以在網上看到任何人的狀態)。我不想使用RSS。

回答

8

您可以從單個用戶獲得與狀態Zend_Service_Twitter_Search

$twitter_search = new Zend_Service_Twitter_Search('json'); 
$response = $twitter_search->search('from:Username'); 
print_r($response); 
+0

這是爲我工作。此搜索方法以數組的形式返回結果,我不需要將其轉換爲數組。我可以通過用戶名搜索它,我不需要密碼。謝謝。 – NAVEED 2009-12-31 07:08:31

+0

如果有人遇到這個答案,值得注意的是Zend_Service_Twitter_Search使用搜索API,因此只會返回大約一週的推文。如果用戶在上週沒有發推文,則必須使用zend_service_twitter的用戶時間軸方法 – raymosley 2013-04-04 00:52:31

1

我已經轉換成字符串對象的SimpleXML /陣列等

$陣列=(數組)simplexml_load_string($ stroq);

我不知道在這種情況下這是否適合你。這是爲了從我從API獲得的XML字符串中獲取數組。說到這一點,是否有可能以json的形式獲取Twitter feed並在其上使用json_decode?這比使用XML要容易得多。

不管怎麼說,它看起來像你的微博路徑

$firstStatusTime=$response->status[1]->created_at 
$firstStatus=$response->status[1]->text 

但很難說沒有對象本身在手或一個更加清晰的打印。

對於第二季度來說,是的,你可以從沒有密碼的twitter上獲取任何人的消息(如果他們沒有被保護)。

2

至於回答你的第一個問題,你可以使用以下直接從Zend Framework Wiki採取的代碼片段:

$twitter = new Zend_Service_Twitter($user, $pass); 

// Get public timeline 
$publicTimeline = $twitter->status->publicTimeline(); 

// Loop through results: 
foreach ($publicTimeline->status as $status) { 
    $date = $status->created_at(); 
    $text = $status->text(); 
    $user = $status->user->screen_name(); 
    echo "$date: @$user: $text<br />\n"; 
} 

現在變量$date$text$user也可以是數組,在這種情況下,你可以寫:

$statusidx = 0; 
// Loop through results: 
foreach ($publicTimeline->status as $status) { 
    $date[$statusidx] = $status->created_at(); 
    $text[$statusidx] = $status->text(); 
    $user[$statusidx] = $status->user->screen_name(); 
    $statusidx++; 
    echo "$date: @$user: $text<br />\n"; 
} 

我無法幫助你與你的第二個問題,僅僅是因爲我沒有一個Twitter帳戶,並沒有經驗,與一般的Twitter API的工作。但從Zend Framework API類來看,它看起來並不像它。

+0

收到以下錯誤:致命錯誤:調用未定義的方法的SimpleXMLElement :: created_at() – NAVEED 2009-12-30 13:33:31

+0

嘗試foreach循環之前插入這樣的:' $ twitter_status = new SimpleXMLElement($ publicTimeline);'並將foreach循環中的'$ publicTimeline-> status'更改爲:'$ twitter_status',因此它說:'$ twitter_status as $ status' ...這只是一個猜測。 – 2009-12-30 13:59:30

+0

您可以根據您的上述評論編輯您的答案。不管怎樣,謝謝。讓我試試這個。 – NAVEED 2009-12-30 16:28:34