在实时服务器中不需要的斜杠附加到编码JSON,无论单引号出现在哪里。
实际上我试图将数字重命名为Nu&#m;,只需在中间添加一个。
PHP Version 5.3.21
Result: {"values":"Nu\\'mber","lastvalue":"Number"}
即。 ' replaced with \\'
而在我的本地服务器中,它的工作正常
PHP Version 5.3.13
Result: {"values":"Nu'mber","lastvalue":"Number"}
另外,我使用了stripslashes(),但没有使用它。在某些情况下,如果我这样做,我必须重用结果JSON,附加更多斜杠。这是PHP版本问题吗?
答案 0 :(得分:1)
这与magic quotes有关。你可以在php.ini或代码中关闭它们。
来自te手册,在php.ini中:
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
或者在你的php代码中:
if (get_magic_quotes_gpc()) {
$process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
while (list($key, $val) = each($process)) {
foreach ($val as $k => $v) {
unset($process[$key][$k]);
if (is_array($v)) {
$process[$key][stripslashes($k)] = $v;
$process[] = &$process[$key][stripslashes($k)];
} else {
$process[$key][stripslashes($k)] = stripslashes($v);
}
}
}
unset($process);
}