2012-11-06 160 views
-1

我试图让我的最新推文显示在我的网页上,并找到并使用这一代码。从stdClass获取字符串

  <?php 
      function buildBaseString($baseURI, $method, $params) { 
       $r = array(); 
      ksort($params); 
      foreach($params as $key=>$value){ 
       $r[] = "$key=" . rawurlencode($value); 
      } 
      return $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r)); 
      } 

      function buildAuthorizationHeader($oauth) { 
      $r = 'Authorization: OAuth '; 
      $values = array(); 
      foreach($oauth as $key=>$value) 
       $values[] = "$key=\"" . rawurlencode($value) . "\""; 
      $r .= implode(', ', $values); 
      return $r; 
      } 

      $url = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=jameskrawczyk"; 
      $oauth_access_token = "SECUIRTY"; 
      $oauth_access_token_secret = "SECURITY"; 
      $consumer_key = "SECURITY"; 
      $consumer_secret = "SECURITY"; 

      $oauth = array('oauth_consumer_key' => $consumer_key, 
         'oauth_nonce' => time(), 
         'oauth_signature_method' => 'HMAC-SHA1', 
         'oauth_token' => $oauth_access_token, 
         'oauth_timestamp' => time(), 
         'oauth_version' => '1.0'); 



      $base_info = buildBaseString($url, 'GET', $oauth); 
      $composite_key = rawurlencode($consumer_secret) . '&' .  rawurlencode($oauth_access_token_secret); 
      $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true)); 
      $oauth['oauth_signature'] = $oauth_signature; 



      $header = array(buildAuthorizationHeader($oauth), 'Expect:'); 
      $options = array(CURLOPT_HTTPHEADER => $header, 
          //CURLOPT_POSTFIELDS => $postfields, 
          CURLOPT_HEADER => false, 
          CURLOPT_URL => $url, 
          CURLOPT_RETURNTRANSFER => true, 
          CURLOPT_SSL_VERIFYPEER => false); 



      $feed = curl_init(); 
      curl_setopt_array($feed, $options); 
      $json = curl_exec($feed); 
      curl_close($feed); 
      $twitter_data = json_decode($json); 
?> 

问题是,我似乎无法弄清楚如何实际打印一次接收到的数据。

+2

'print_r($ twitter_data);'应该有帮助。你只需要浏览这个数组。 –

回答

2

关于如何打印数据,您有两种选择。 1.)一个是使用$ twitter_data作为一个类(这是你现在正在做的)。 2.)一个是使用$ twitter_data作为数组。 这是通过使用完成的:代替

$twitter_data = json_decode($json,true); 

$twitter_data = json_decode($json); 

,如果您使用$ twitter_data作为数组,你可以去通过每个元素使用:

foreach ($twitter_data as $elem) 
{ 
    print_r($elem); 
    echo '<br>'; 
} 

如果你使用它作为一个类,你将不得不知道每个“元素”是如何命名的,因此使用 echo $ twitter_data-> elementName;或者使用反射类来获取$ twitter_data中所有“元素”的列表并通过它们进行解析。