解码Instagram回复(php)


Decoding instagram reply (php)

我正在尝试从Instagram的热门帖子中获取信息,当我在api响应上使用var_dump()时,它会填充一个字符串,其中包含我想要的信息,尽管当我尝试使用json_decode()对其进行解码时,它会返回一个null,当我检查json_last_error()时,我得到Malformed UTF-8 characters, possibly incorrectly encoded

这是我.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);

}
?>

我会试试这个:

$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);

我遇到了同样的问题,因为我在某处使用了默认的substr()模块,然后将其替换为mb_substr()并且现在工作正常