0

在实时服务器中附加到编码 JSON 的不需要的斜杠,只要存在单引号。

实际上,我正在尝试将 Number 重命名为 Nu'mber,只是在两者之间添加一个。

PHP 版本 5.3.21

Result: {"values":"Nu\\'mber","lastvalue":"Number"}

IE' replaced with \\'

而在我的本地服务器中,它工作得很好

PHP 版本 5.3.13

Result: {"values":"Nu'mber","lastvalue":"Number"}

此外,我使用了 stripslashes(),但没有使用它。在某些情况下,如果我这样做,我必须重用结果 JSON,附加更多斜线。这是 PHP 版本问题吗?

4

1 回答 1

1

这与魔术引号有关。您可以在 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);
}
于 2013-05-29T05:55:32.403 回答