2012-04-13 88 views
0

我有一個包含一些像這樣的Facebook的Open Graph的信息的TXT文件:如何從TXT文件中提取Open Graph信息?

{ 
    "data": [ 
     { 
     "name": "Avatar", 
     "category": "Movie", 
     "id": "82771544063", 
     "created_time": "2012-04-13T21:16:56+0000" 
     }, 
     { 
     "name": "HappyDance", 
     "category": "Movie", 
     "id": "243564344063", 
     "created_time": "2012-04-13T21:16:56+0000" 
     } 
    ], 
    "paging": { 
     "next": "https://graph.facebook.com/me/likes?format=json&limit=5000&offset=5000&__after_id=5546653546361" 
    } 
} 

在PHP中,我希望從顯示

"id": "XXXXXXXXXXXX", 

輸出應該行提取所有身份證號碼像這樣:

I like 8277564344063 
I like 243564344063 

我開始以下,但我得到了一個錯誤:

<?php 
$file_handle = fopen("raw.txt", "rb"); 
ob_start(); 

$text = file_get_contents('raw.txt'); 
$decode = json_decode($text); 

print_r($decode); 

$new_content = ob_get_clean(); 
file_put_contents("likes.txt", $new_content); 

fclose($file_handle); 
?> 

錯誤是我的輸出是空的!我究竟做錯了什麼?

請幫忙?

+0

我想你寫這段代碼就好像它是C++使用文件獲取內容。 – 2012-04-13 21:44:38

+0

現在使用file_get_contents(),但我收到錯誤。注意看我的更新代碼? – Sweepster 2012-04-13 23:24:35

+0

檢查我的答案。你是否試圖用逗號分隔的id列表來寫入文本文件? – 2012-04-13 23:57:12

回答

2

您沒有有效的JSON。

JSON 對象下面這行是有效的JSON。我在「data」數組中的最後一個關聯數組之後刪除了逗號。數組末尾不應該有逗號。

 { 
      "data": [ 
       { 
       "name": "Avatar", 
       "category": "Movie", 
       "id": "82771544063", 
       "created_time": "2012-04-13T21:16:56+0000" 
       }, 
       { 
       "name": "HappyDance", 
       "category": "Movie", 
       "id": "243564344063", 
       "created_time": "2012-04-13T21:16:56+0000" 
       } 
      ], 
      "paging": { 
       "next": "https://graph.facebook.com/me/likes? format=json&limit=5000&offset=5000&__after_id=5546653546361" 
      } 
     } 


Parse error on line 14: 
... },   ], "paging": { 
---------------------^ 
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 

當我從無效的JSON中刪除了逗號。我能夠得到你想要的結果。

  <?php 
       $json_object = file_get_contents('fb.json'); 
       if(!$json_object) { 
             echo "oops, cant read the file"; 
            } 

       // remap json_object 
       $json_object = json_decode($json_object,true); 

        foreach($json_object['data'] as $item) { 
          $items[] = "I like" . ' ' . $item['id']; 

         /* If you want to just echo " I like xyz" etc 
         * use echo "I like" . $item['id']; 
         */ 
         } 

        $list = implode(',',$items); 

        echo $list; 
      ?> 
+0

我收到兩個錯誤:警告:無效的參數提供了foreach()在第7行readlikes.php和警告:implode()[function.implode]:第15行readlikes.php中傳遞的無效參數 – Sweepster 2012-04-14 00:28:23

+0

那麼,是JSON與您在問題中提供的文件完全相同的文件?如果沒有,那麼你應該驗證json是否有效。以上代碼適用於您提供的數據。 – 2012-04-14 00:29:51

+0

該文件是一個TXT文件。我將它重命名爲fb.json,但錯誤仍然存​​在。該文件的佈局與我發佈的完全一致。 – Sweepster 2012-04-14 00:53:58