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 に答える