我从Instagram上拉JSON:
$instagrams = json_decode($response)->data;
然后将变量解析为PHP数组以重构数据,然后重新编码和缓存文件:
file_put_contents($cache,json_encode($results));
当我打开缓存文件时,所有正斜杠"/"都被转义:
http:\/\/distilleryimage4.instagram.com\/410e7...
我从搜索中收集json_encode()自动执行此操作...有没有办法禁用它?
hak*_*kre 267
有没有办法禁用它?
是的,你只需要使用JSON_UNESCAPED_SLASHES旗帜.
!重要的阅读之前:https://stackoverflow.com/a/10210367/367456(知道你在处理什么 - 了解你的敌人)
json_encode($str, JSON_UNESCAPED_SLASHES);
Run Code Online (Sandbox Code Playgroud)
如果您手头没有PHP 5.4,请选择众多现有功能中的一个并根据需要进行修改,例如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";
Run Code Online (Sandbox Code Playgroud)
示例输出:
"http:\/\/www.example.com\/"
"http://www.example.com/"
Run Code Online (Sandbox Code Playgroud)
Thi*_*ter 44
是的,但不要 - 逃避正斜杠是一件好事.当在<script>标签内部使用JSON时,必须在</script>任何地方 - 甚至在字符串内 - 将结束脚本标签.
根据JSON的使用位置,它不是必需的,但可以安全地忽略它.