PHP,为什么你要逃避我的报价?

时间:2011-06-12 20:56:04

标签: php json

  

可能重复:
  Why are escape characters being added to the value of the hidden input

所以,我有一个名为Save.php的文件。

它需要两件事:文件和新内容。

您可以通过发送'/Resources/Save.php?file=/Resources/Data.json&contents={"Hey":"There"}'等请求来使用它。

..但当然,编码网址。 :)为了简单和可读性,我把它全部留下了未编码。

该文件有效,但不是内容..

{"Hey":"There"}

..我找到..

{\"Hey\":\"There\"}

..当稍后通过XHR获取JSON文件时尝试使用JSON.parse时会引发错误。

要保存内容,我只需使用..

file_put_contents($url, $contents);

我可以做些什么来摆脱反斜杠?

6 个答案:

答案 0 :(得分:8)

在PHP.ini中关闭magic_quotes

答案 1 :(得分:4)

看起来您已magic_quotes已开启。

如果是这种情况,请将其关闭 - 或使用runtime disabling function

答案 2 :(得分:3)

你可能启用了魔法引号,只能做两件事。禁用php.ini中的魔术引号或在stripslashes()$_GET全局变量上调用$_POST

仅供参考,使用$_GET['contents']而不是$contents;较新版本的php不会创建$contents var。

答案 3 :(得分:3)

试试这个:

file_put_contents($url, stripslashes($contents));

答案 4 :(得分:2)

您应该在php.ini配置文件中禁用magic_quotes。但是,如果无法做到这一点,您还可以使用stripslashes()函数来摆脱自动转义。

答案 5 :(得分:1)

如果您无法为服务器关闭魔术引号,则需要使用get_magic_quotes_gpc()检查是否已启用,{}为stripslashes()