0

我正在尝试从 Instagram 的热门帖子中获取信息,当我var_dump()在 api 响应中使用它时,它会填充一个包含我想要的信息的字符串,尽管当我尝试使用它对其进行解码时,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);


}

?>
4

2 回答 2

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);
于 2013-11-14T15:22:07.440 回答
0

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

于 2019-08-03T10:21:24.957 回答