2010-08-07 63 views
1

因此,根據我的最後一個問題,我正在努力從Twitter推送朋友飼料。我跟着一個教程來編寫這個腳本,幾乎一步一步地完成,所以我不確定它有什麼問題,並且我沒有看到任何錯誤消息。在從shell中保存之前,我從未真正使用cURL,而且我對PHP非常陌生,請耐心等待。抓住Twitter朋友飼料使用PHP和cURL

<html> 
<head> 
<title>Twitcap</title> 
</head> 
<body> 
<?php 
    function twitcap() 
    { 
    // Set your username and password 
    $user = 'osoleve'; 
    $pass = '****'; 

    // Set site in handler for cURL to download 
    $ch = curl_init("https://twitter.com/statuses/friends_timeline.xml"); 

    // Set cURL's option 
    curl_setopt($ch,CURLOPT_HEADER,1); // We want to see the header 
    curl_setopt($ch,CURLOPT_TIMEOUT,30); // Set timeout to 30s 
    curl_setopt($ch,CURLOPT_USERPWD,$user.':'.$pass); // Set uname/pass 
    curl_setopt($ch,CURLOPT_RETURNTRANSER,1); // Do not send to screen 

    // For debugging purposes, comment when finished 
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); 

    // Execute the cURL command 
    $result = curl_exec($ch); 

    // Remove the header 
    // We only want everything after <? 
    $data = strstr($result, '<?'); 

    // Return the data 
    $xml = new SimpleXMLElement($data); 
    return $xml; 
    } 

    $xml = twitcap(); 
    echo $xml->status[0]->text; 
?> 
</body> 
</html> 

回答

1

難道你真的不需要「?>」之後的所有東西嗎?

$data = strstr($result,'?>'); 

此外,您是否使用免費的虛擬主機?由於有人發送垃圾郵件,我的託管服務提供商阻止了對Twitter的訪問。

0

請注意,如果您使用strstr returend字符串實際上將包括針線。所以你必須去掉字符串中的前2個字符

我寧願推薦函數substr和strpos的組合!

反正,我認爲simplexml應該能夠處理這個標題,這意味着我認爲這一步是沒有必要的!

此外,如果我打開網址,我沒有看到像標題!如果犯規的strstr查找字符串,它返回false,所以你不要有任何數據在當前腳本

,而不是$data = strstr($result, '<?');試試這個:

if(strpos('?>',$data) !== false) { 
$data = strstr($result, '?>'); 
} else { 
$data = $result; 
}