我从Instagram中提取JSON:
$instagrams = json_decode($response)->数据;
然后将变量解析为PHP数组以重构数据,然后重新编码并缓存文件:
file_put_contents(缓存美元,json_encode (results美元);
当我打开缓存文件时,所有的斜杠“/”都被转义了:
http: distilleryimage4.instagram.com \ / \ / \ / 410 e7……
我收集从我的搜索,json_encode()自动做这个…有办法让它失效吗?
有办法让它失效吗?
是的,你只需要使用JSON_UNESCAPED_SLASHES标志(PHP 5.4+)。
重要的阅读之前:https://stackoverflow.com/a/10210367/367456(知道你在处理什么-了解你的敌人:不要在web/html上下环境中使用- CLI,除非CGI,可能是很好的想法,如果他们认为他们需要在JSON HTTP上下环境中可读性的目的,他们有不同的问题)
json_encode($str, JSON_UNESCAPED_SLASHES);
如果手头没有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";
示例输出:
"http:\/\/www.example.com\/"
"http://www.example.com/"