【问题标题】:Retrieving tweets from hashtag using curl使用 curl 从标签中检索推文
【发布时间】:2012-06-12 02:55:09
【问题描述】:

我正在尝试使用某个主题标签(在本例中为 #stackoverflow)获取最新推文的文本和用户名。返回的错误是Invalid argument supplied for foreach()。我认为这是因为 $content 实际上不是关联数组。

function get_twitter($hashtag) {

    $json_url = "http://search.twitter.com/search.json?q=%23" . $hashtag . "&rpp=1&result_type=recent";
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$returned_content = get_twitter('stackoverflow');
$content = json_decode($returned_content);
foreach ($content['results'] as $tweet) {
    echo $tweet['text'];
    echo $tweet['from_user'];
}

Twitter 返回的 JSON 示例如下:

{
"completed_in":0.099,   
"max_id":210895419549548544, 
"max_id_str":"210895419549548544", 
"next_page":"?page=2&max_id=210895419549548544&q=%23stackoverflow&rpp=1&result_type=recent", 
"page":1, 
"query":"%23stackoverflow", 
"refresh_url":"?since_id=210895419549548544&q=%23stackoverflow&result_type=recent", 
"results":[ 
    { 
        "created_at":"Fri, 08 Jun 2012 00:46:00 +0000", 
        "from_user":"Beseeker", 
        "from_user_id":334048944, 
        "from_user_id_str":"334048944", 
        "from_user_name":"Italo Iv\u00e1n", 
        "geo":null, 
        "id":210895419549548544, 
        "id_str":"210895419549548544", 
        "iso_language_code":"es", 
        "metadata":{"result_type":"recent"}, 
        "profile_image_url":"http:\/\/a0.twimg.com\/profile_images\/1611497833\/imagen-perfil-fb_normal.jpg", 
        "profile_image_url_https":"https:\/\/si0.twimg.com\/profile_images\/1611497833\/imagen-perfil-fb_normal.jpg", 
        "source":"<a href="http:\/\/twitter.com\/">web<\/a>", 
        "text":"podr\u00eda pasar horas y horas en #StackoverFlow", 
        "to_user":null, 
        "to_user_id":0, 
        "to_user_id_str":"0", 
        "to_user_name":null
    }
], 
    "results_per_page":1, 
    "since_id":0, 
    "since_id_str":"0"
}

提前感谢您的任何想法!

【问题讨论】:

    标签: php json curl twitter


    【解决方案1】:

    这个功能没有'用户 oAuth 并且可能不再工作了。

    【讨论】:

      【解决方案2】:
      function getTweets($hash_tag) {
      
          $url = 'http://search.twitter.com/search.atom?q='.urlencode($hash_tag) ;
          echo "<p>Connecting to <strong>$url</strong> ...</p>";
          $ch = curl_init($url);
          curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE);
          $xml = curl_exec ($ch);
          curl_close ($ch);
      
          //If you want to see the response from Twitter, uncomment this next part out:
          //echo "<p>Response:</p>";
          //echo "<pre>".htmlspecialchars($xml)."</pre>";
      
          $affected = 0;
          $twelement = new SimpleXMLElement($xml);
          foreach ($twelement->entry as $entry) {
              $text = trim($entry->title);
              $author = trim($entry->author->name);
              $time = strtotime($entry->published);
              $id = $entry->id;
              echo "<p>Tweet from ".$author.": <strong>".$text."</strong>  <em>Posted ".date('n/j/y g:i a',$time)."</em></p>";
          }
      
          return true ;
      }
      

      这样使用:

      getTweets('#yankees');
      

      Documentation

      【讨论】:

      • 哇。这简直太可笑了。非常感谢楼主!
      【解决方案3】:

      错误出现在您的“foreach”循环中。它应该是:

      foreach($status->results as $tweet) {
          echo $tweet->text;
          echo $tweet->from_user;
      }
      

      【讨论】:

        猜你喜欢
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-04
        • 1970-01-01
        • 1970-01-01
        • 2020-06-07
        • 1970-01-01
        相关资源
        最近更新 更多