0

PHPスクリプトを使用してCheezburger.comに画像を投稿し、URLをユーザーに返そうとしています。投稿部分は正常に機能し、リンクやIDなどをJSON形式で取得しますが、実行するjson_decode($var, true)と生のJSONのみが返されます。スクリプトに入力された文字列は次のとおりです。

{
    "items": [
        {
            "id": 6980805120,
            "link": "https://api.cheezburger.com/v1/assets/6980805120",
            "created_time": 1358451002,
            "updated_time": 1358451002,
            "media": [
                {
                    "name": "maxW580",
                    "url": "https://i.chzbgr.com/maxW580/6980805120/h89D91707/",
                    "height": 500,
                    "width": 500,
                    "is_animated": false
                },
                {
                    "name": "maxW320",
                    "url": "https://i.chzbgr.com/maxW320/6980805120/h89D91707/",
                    "height": 320,
                    "width": 320,
                    "is_animated": false
                },
                {
                    "name": "square50",
                    "url": "https://i.chzbgr.com/square50/6980805120/h89D91707/",
                    "height": 50,
                    "width": 50,
                    "is_animated": false
                }
            ],
            "title": "JSA, UR WEBSIET IZ AWSUM. URE HIRD!",
            "description": "JSA, UR WEBSIET IZ AWSUM. URE HIRD! -- This image was created by jsa005 from JSiVi using the JSiVi Meme Generator. Try it out at http://jsivi.uni.me!",
            "asset_type_id": 0,
            "share_url": "http://chzb.gr/10Cg1PS"
        }
    ]
}

それを実行json_decode($jsonstring, true)すると、$jsonstring上記の文字列を含むcURLによって返される変数であるため、入力した文字列のみが返されます。混乱しています。

$fields = array(
'access_token' => $this->getToken(),
'title' => $title,
'description' => $description,
'content' => $base64data,
'anonymous' => 'true');
$url = 'https://api.cheezburger.com/v1/assets';
$fields_string = http_build_query($fields);
//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);

$jsonstring = json_decode($result, TRUE);
4

1 に答える 1

2

セットする

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

それなしで実行する前curl_exec($ch);に、応答はブラウザに直接出力されるため、「生の」JSONが表示され、$responseブール値(TRUEまたはFALSE)になります。詳細については、マニュアルページを参照してください。

于 2013-01-17T20:05:36.617 に答える