var_dump($json)
の出力は私に次のよう
array(2) {
[0]=> string(64) "http://localhost/theme/wp-content/uploads/2017/08/LOGO-SEG-2.png"
[1]=> string(64) "http://localhost/theme/wp-content/uploads/2017/08/algoritims.jpg"
}
を与えるjson_decode()
$input = '[\"http:\\/\\/localhost\\/theme\\/wp-content\\/uploads\\/2017\\/08\\/LOGO-SEG-2.png\",\"http:\\/\\/localhost\\/theme\\/wp-content\\/uploads\\/2017\\/08\\/algoritims.jpg\"]';
$json = json_decode(stripslashes($input),true);
前にスラッシュをストリッピングしてみはhereそれを試してみてください!
編集に追加する:
に元の文字列を、それは何の鍵を持っていないので、実際にJSON配列ではなく、オブジェクトの文字列表現です。私は各要素のurl
キーを持つオブジェクトで同じ修正を試みましたが、これが結果です。
$input = '[{\"url\" : \"http:\\/\\/localhost\\/theme\\/wp-content\\/uploads\\/2017\\/08\\/LOGO-SEG-2.png\"},{\"url\" : \"http:\\/\\/localhost\\/theme\\/wp-content\\/uploads\\/2017\\/08\\/algoritims.jpg\"}]';
$json = json_decode(stripslashes($input),true);
出力:
array(2) {
[0]=> array(1) {
["url"]=> string(64) "http://localhost/theme/wp-content/uploads/2017/08/LOGO-SEG-2.png"
}
[1]=> array(1) {
["url"]=> string(64) "http://localhost/theme/wp-content/uploads/2017/08/algoritims.jpg"
}
}
さらに、\"
はない文字列リテラルで有効なJSON文字です。変数が"
(例:$encoded = "{\"some value\"}";
)を使用して宣言されている場合にのみ有効です。
echo var_dump(json_decode('{\"myKey\": \"myValue\"}', true)); // output: NULL
お試しくださいlive
これは症状を治療するもので、症状は治療していません。原因。また、any要素に二重引用符が含まれていると、破損します。 – ishegg
@ishegg私は同意しません。なぜなら、 'json_decode()'がバックスラッシュ(backslash)のために動作しない理由は(OP:バックスラッシュの存在が答えの文字列の唯一の違いです) OPはこのデータを取得していますが、われわれが知っているすべての理由で、入力値 –
を制御できない可能性があります。これはバックスラッシュのためです。しかし、問題は '\"はJSONオブジェクト内の有効な文字列であるため、それらを取り除くと、将来は問題が発生します(URLにはテキスト記述があります。 JSONでエンコードされた文字列を 'stripslashes()'することでコードが破損します。 – ishegg