195

Instagram から JSON を取得しています。

$instagrams = json_decode($response)->data;

次に、変数を PHP 配列に解析してデータを再構築し、ファイルを再エンコードしてキャッシュします。

file_put_contents($cache,json_encode($results));

キャッシュ ファイルを開くと、すべてのスラッシュ「/」がエスケープされます。

http:\/\/distilleryimage4.instagram.com\/410e7...

json_encode()これを自動的に行う検索から収集します...これを無効にする方法はありますか?

4

4 に答える 4

343

それを無効にする方法はありますか?

JSON_UNESCAPED_SLASHESはい、フラグを使用するだけで済みます。

前に読んだ重要な情報:https ://stackoverflow.com/a/10210367/367456 (何を扱っているかを知っている-敵を知っている)

json_encode($str, JSON_UNESCAPED_SLASHES);

PHP 5.4が手元にない場合は、既存の多くの関数の1つを選択し、必要に応じて変更します(例:http://snippets.dzone.com/posts/show/7487(アーカイブされたコピー))

デモの例

<?php
/*
 * Escaping the reverse-solidus character ("/", slash) is optional in JSON.
 *
 * This can be controlled with the JSON_UNESCAPED_SLASHES flag constant in PHP.
 *
 * @link http://stackoverflow.com/a/10210433/367456
 */    

$url = 'http://www.example.com/';

echo json_encode($url), "\n";

echo json_encode($url, JSON_UNESCAPED_SLASHES), "\n";

出力例:

"http:\/\/www.example.com\/"
"http://www.example.com/"
于 2012-04-18T13:29:37.377 に答える
51

はい。ただし、スラッシュをエスケープしないでください。<script>タグ内で JSON を使用する場合は、任意の</script>場所 (文字列内であっても) がスクリプト タグを終了するため、必要です。

JSON が使用される場所によっては必要ありませんが、無視しても問題ありません。

于 2012-04-18T13:25:44.303 に答える
-1

私はそのような状況に遭遇しなければならなかった、そして単純に、

str_replace("\/","/",$variable)

私のために働いた。

于 2019-10-15T03:25:34.287 に答える