2013-11-14 19 views
0

我想從Instagram的熱門帖子獲取信息,當我在api響應上使用var_dump()時,它用一個字符串填充了我想要的信息,儘管如此,當我嘗試解碼它時使用json_decode()它返回一個空,當我檢查json_last_error()我得到Malformed UTF-8 characters, possibly incorrectly encoded解碼instagram的回覆(php)

這是我的PHP文件

<?php 

function get_popular($user_id,$count){ 

$api = 'https://api.instagram.com/v1/media/popular?client_id='.$user_id.'&count='.$count; 

    $response = file_get_contents($api); 
    var_dump($response); 

     // Decode the response and build an array 
     error_reporting(E_ALL); 
     $deco = json_decode($response, TRUE); 

     switch (json_last_error()) { 
     case JSON_ERROR_NONE: 
      echo ' - No errors'; 
     break; 
     case JSON_ERROR_DEPTH: 
      echo ' - Maximum stack depth exceeded'; 
     break; 
     case JSON_ERROR_STATE_MISMATCH: 
      echo ' - Underflow or the modes mismatch'; 
     break; 
     case JSON_ERROR_CTRL_CHAR: 
      echo ' - Unexpected control character found'; 
     break; 
     case JSON_ERROR_SYNTAX: 
      echo ' - Syntax error, malformed JSON'; 
     break; 
     case JSON_ERROR_UTF8: 
      echo ' - Malformed UTF-8 characters, possibly incorrectly encoded'; 
     break; 
     default: 
      echo ' - Unknown error'; 
     break; 
    } 


     var_dump($deco); 


} 

?> 

回答

0

我想試試這個:

$response = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($response)); 
$json = json_decode($response); 

或無需轉換:

$json = json_decode(utf8_encode($response)); 

編輯基於評論:

我注意到有在JSON一些HTML實體(笑臉爲例):

html_entity_decode($response); 
+0

這樣做,現在我得到任何語法錯誤,畸形的JSON或意外的控制字符發現 – user2992681

+0

嘗試json_decode(html_entity_decode($響應),TRUE);它爲我解決了它。 – Brice