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, '/')
在比较期间允许正确的输出。