编码()转义正斜杠

我从Instagram上拉JSON:

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

然后将变量解析为一个PHP数组来重新构造数据,然后重新编码和缓存文件:

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

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

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

我从我的搜索中收集json_encode()自动执行此操作...有没有办法禁用它?


有没有办法禁用它?

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

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

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/"

是的,但不要 - 逃避正斜杠是件好事。 在<script>标记内使用JSON时,必须将其作为</script> ,即使在字符串内部也会结束脚本标记。

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


另一方面,我遇到了一个PHPUNIT断言的问题,这个URL包含在或者等于一个被json_encoded的url中 -

我的预期:

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

将被编码为:

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

如果您需要进行比较,请使用以下命令转换网址:

addcslashes($url, '/')

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

链接地址: http://www.djcxy.com/p/47921.html

上一篇: encode() escaping forward slashes

下一篇: JSON left out Infinity and NaN; JSON status in ECMAScript?