0

現在の関数を使用して json ファイルを解析します。

   function getRemoteJson($uri, $decode=true, $noob=false){
     if($uri){
       $fp = fopen($uri, "r");
       $json = trim(file_get_contents($fp));
       fclose($fp);

      if($decode) return json_decode($json, true);
      else return $json;
      }
     else return false;
   }

このファイルで問題なく動作します: http://webcast-a.live.sportingpulse.com/matches/3886/09/18/90/33S64Il4cTaxQ/data.json

しかし、それを使用すると null が返されます

このファイルを解析してもエラー コードはありません (つまり、json_last_error() は JSON_ERROR_NONE を返します)。

そして、オンラインツールを使用してフォーマットを確認すると、ファイルが解析されます...

手がかりがあればありがとう

4

1 に答える 1

0

OK、問題が見つかりました... 別のサーバーで試してみたところ、JSON_ERROR_UTF8 エラーが発生しました。

したがって、コードを次のように変更すると:

function getRemoteJson($uri, $decode=true, $noob=false, $utf8_error = false){
 if($uri):
   $fp = fopen($uri, "r");
   if($utf8_error) $json = utf8_encode(trim(stream_get_contents($fp))); 
        else $json = trim(stream_get_contents($fp)); 
        fclose($fp);

        $data = json_decode($json, true);

        if(is_array($data)) return $data;   

        else
            if(!$utf8_error) return getRemoteJson($uri, $decode, true, true);
            else return false;
    else:
        return false;
    endif;
    }
于 2013-11-10T08:31:08.420 に答える