我想知道是否有人知道PHP设置会自动转义双引号。
我的问题是在我的本地服务器上,我将此字符串发布到服务器:
{"0":{"id":"19","goal":"34"},"1":{"id":"22","goal":"657675"},"2":{"id":"21","goal":"456"}}
它工作正常。但是,在生产服务器上,我发布了相同的字符串,当我回显它时,它将更改为:
{\"0\":{\"id\":\"19\",\"goal\":\"34\"},\"1\":{\"id\":\"22\",\"goal\":\"657675\"},\"2\":{\"id\":\"21\",\"goal\":\"456\"}}
我设法通过string_replace()调用来修复它,但我想知道为什么会发生这种情况。生产服务器和本地服务器使用相同的代码并更新为使用相同的数据,所以我假设必须由服务器设置引起差异,但我从未听说过这样做的设置。
有没有人经历过这样的事情?
答案 0 :(得分:11)
是。它被称为魔术行情:
http://php.net/manual/en/security.magicquotes.php
http://php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc
您通常希望将其关闭,并根据需要手动处理转义。
答案 1 :(得分:2)
这通常是“魔术行情”的问题。他们是邪恶的,IMO。如果可能,你should disable them。
它们旨在保护您免受SQL注入攻击,因此请在禁用它们后小心。
答案 2 :(得分:-3)
您可以尝试在发布的数据中使用单引号而不是双重