背景:我不是一个php程序员,而且我只知道足够让我的iOS应用程序的Web服务部分工作。
我发现我的php正在为我的文本添加反斜杠,当我不想要它时。例如,如果我设置了一些这样的变量:
$directory = "directory/";
$file = "file.jpg"
然后我通过JSON数组输出回我的设备:
$directory . $file
我得到了
"directory\/file.jpg"
我已经在我的php中运行了get_magic_quotes_gpc并报告了魔术引号被关闭。我是这样做的:
if (get_magic_quotes_gpc()){
//then I send something back in the JSON array to let me know that get_magic_quotes_gpc is on
}
我尝试使用stripslashes()(在原始变量或输出上)并且没有任何变化。
那么如何阻止它这样做呢?因为这意味着我无法告诉我的php删除特定目录中的文件。
提前致谢
答案 0 :(得分:5)
对元素进行编码时,请执行以下操作:
json_encode($str, JSON_UNESCAPED_SLASHES);
使用JSON_UNESCAPED_SLASHES
可以防止添加不需要的斜杠。
答案 1 :(得分:3)
如果您确实想要这样做,请设置the JSON_UNESCAPED_SLASHES
option。
json_encode ( $value, JSON_UNESCAPED_SLASHES );
但是,当您将JSON注入JavaScript程序时,斜杠不会造成任何伤害并提供保护,防止</script>
被注入<script>
元素。