json_encode()转义正斜杠

我从Instagram上拉JSON:

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

然后将variablesparsing到一个PHP数组中,重新构造数据,然后重新编码和caching文件:

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

当我打开caching文件时,所有正斜杠“/”都被转义:

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

我从我的search中收集json_encode()自动执行此操作…是否有办法禁用它?

有没有办法禁用它?

是的,你只需要使用JSON_UNESCAPED_SLASHES标志。

!重要阅读之前: https : //stackoverflow.com/a/10210367/367456 (知道你在处理 – 知道你的敌人)

 json_encode($str, JSON_UNESCAPED_SLASHES); 

如果您手头没有PHP 5.4,请select现有的许多function之一,并根据需要进行修改,例如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/" 

是的 ,但不要 – 逃避正斜杠是一件好事 。 在<script>标签内使用JSON时,任何地方都必须作为</script> ,即使是在string内也会结束脚本标签。

根据JSON的使用位置,这是不必要的,但可以安全地忽略它。

另一方面,我有一个问题与PHPUNIT断言url包含在或等于一个url是json_encoded –

我的预期:

http://localhost/api/v1/admin/logs/testLog.log

将被编码为:

http:\/\/localhost\/api\/v1\/admin\/logs\/testLog.log

如果您需要进行比较,请使用以下方法转换url:

addcslashes($url, '/')

在比较期间允许正确的输出。