1

CURL で文字列 "{success: false, errors: { reason: 'text text text' }}" を受け取りました。この文字列を配列またはオブジェクトに変換する方法を教えてください。

文字列 '{"success": "false"....}' は json_decode によってオブジェクトに変換される可能性がありますが、qoutes のない文字列があります。

4

1 に答える 1

1

最初にこの正規表現を使用します (引用符が追加されます)

$json = preg_replace ('/(?<!")(?<!\w)(\w+)(?!")(?!\w)/u', '"$1"', $string);

その後、単純に json_decode() を使用できます

$array = json_decode ($json);

アップデート

このスクリプトはどこかで見つけました:

function json_fix_quotes ($string){
    $string = str_replace("{",'{"',$string);
    $string = str_replace(":'",'":"',$string);
    $string = str_replace("',",'","',$string);
    $string = str_replace("'}",'"}',$string);
    return $string;
}

正規表現の代わりにそれを試してください

于 2012-05-12T17:39:19.863 に答える