2013-01-04 45 views
0

我试图从Facebook页面上拉墙贴,但我遇到了问题。我没有解析JSON的Twitter feed,所以我看不到我遇到了什么问题。解析PHP中的Facebook JSON时遇到问题

这里是我的代码,并here's the tutorial I used for help

<?php 
    $url = "http://www.facebook.com/feeds/page.php?format=json&id=96551536516";    

    function disguise_curl($url) { 
     $curl = curl_init(); 
     $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
     $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
     $header[] = "Cache-Control: max-age=0"; 
     $header[] = "Connection: keep-alive"; 
     $header[] = "Keep-Alive: 300"; 
     $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
     $header[] = "Accept-Language: en-us,en;q=0.5"; 
     $header[] = "Pragma: "; 

     curl_setopt($curl, CURLOPT_URL, $url); 
     curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla'); 
     curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
     curl_setopt($curl, CURLOPT_REFERER, ''); 
     curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); 
     curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($curl, CURLOPT_TIMEOUT, 10); 

     $html = curl_exec($curl); 
     curl_close($curl); 

     return $html; 
    } 

    $response = json_decode(disguise_curl($url)); 

    foreach($response->entries as $block){ 
     echo 
      "<li class='clearfix'> 
       <div class='streamPosterName'>{$block->author}</div> 
       <div class='postContent'>{$block->title}</div> 
      </li>"; 
    } 
?> 

当我的网页的其他部分解析JSON,我使用引用JSON对象下面的方法:

<?php 
    $url = "http://search.twitter.com/search.json?q=Apple&rpp=50";    
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $curlout = curl_exec($ch); 
    curl_close($ch); 
    $response = json_decode($curlout, true); 

    foreach($response["results"] as $block){ 
     echo 
      "<li class='clearfix'> 
       <img src='".$block["profile_image_url"]."' /> 
       <div class='streamPosterName'>".$block["from_user_name"]."</div> 
       <div class='streamPosterUsername'>@".$block["from_user"]."</div> 
       <div class='postContent'>".$block["text"]."</div> 
      </li>"; 
    } 
?> 

上面的代码正确拉入推文。 Facebook的解析提供下列错误:

Catchable fatal error: Object of class stdClass could not be converted to string in /home/public_html/mkt/index.php on line 260

260线如上所示:

<div class='streamPosterName'>{$block->author}</div> 
+1

如果您定义'不工作' – scoota269

+0

Woops,将会有帮助。 – Jon

+1

这只是意味着$ block-> author是Object类型而不是String,因此不会回显 – Stefan

回答

1
<div class='streamPosterName'>{$block->author}</div> 

默认情况下,json_decode()表示JSON对象作为PHP stdClass的对象。该错误意味着$block->author是一个对象,但您正在使用它,就好像它是一个字符串。可能试试$block->author->name

+0

Ahh dang,愚蠢的错误。没有阅读通过该JSON对象的所有方式。谢谢! – Jon