2012-04-29 20 views
4

私はfile_get_contents()でstackoverflow APIからjsonレスポンスを取得しようとしていますが、I–%&/mÊ{JõJ×àt¡€ $ØÁÁæ'ìIG#)«*ÊEVe] f @ etcなどのような奇妙な文字が戻ってきます。 。file_get_contentsと無効な文字

[OK]を、アドレスが http://api.stackoverflow.com/1.1/users/779187/

私のコードは、文字列が、JSONはないのでjson_decの応答がNULLである

$json_res = json_decode(file_get_contents("http://api.stackoverflow.com/1.1/users/779187/")) 明らかです。私も直接試さjson_decodeせずに値をダンプ が、結果は "I-%&/MEは、{JOJは` $ ...àt¡€×"

答えて

2

gzdecodeを使用して、圧縮されたコンテンツをデコードします。 gzdecode関数がない場合は、this pageから実装を使用する必要があります。私はあなたが検索したいページで動作することを確認しました。

2

APIレスポンスは、gzipで圧縮助けを

のおかげであります。このページを参照して応答をデコードしてください:http://api.stackoverflow.com/1.1/usage/gzip

cURLに切り替えると、CURLOPT_ENCODINGオプションを使用してデコードできます。

$url = 'http://api.stackoverflow.com/1.1/users/779187/'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_ENCODING, 1); 
$output = curl_exec($ch); 
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
curl_close($ch); 
if($status=='200') { 
    $data = json_decode($output); 
    echo '<pre>' . print_r($data,true) . '</pre>'; 
} 
+0

ありがとうJamie、それはエレガントなソリューションですが、私はこの機能を実装したいと思うhostig(ボア)でcURLがアクティブではありません。 もちろん、cURLがアクティブな場所で使用します。 – Goonie