0

我正在尝试制作一个可以让我更轻松地创建 HTML 文档的应用程序。

它主要工作,除了当我写入文件时它添加反斜杠。

<a href=\"google.com\">google</a>

知道如何阻止它这样做吗?

我让它工作了!如果我在将它写入文件之前使用 stripslashes(),它将保存/创建没有 \ 的文件,谢谢您的所有帮助!

4

4 回答 4

2

这可能是因为魔术引号打开了,如果您不想每次都使用 stripslashes,您应该在 php.ini 文件中或使用类似的 htaccess 文件禁用它们:

php.ini文件中:

magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

或在.htaccess文件中:

php_flag magic_quotes_gpc Off

或直接在您的代码中禁用它们:

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);
}

来源: http: //php.net/manual/en/security.magicquotes.disabling.php

于 2012-06-19T19:31:44.660 回答
1

此行为是由 PHP 已弃用的Magic Quotes指令引起的,您的仍处于激活状态,因为它在 5.4 之前的任何默认 PHP 安装中都是默认的。除非您指定长度参数,否则fwrite将查看magic-quotes-runtime以查看它是否会转义。

把它关掉,你可以把它

php_flag magic_quotes_gpc Off

.htaccess文件中,您需要使用 apache DSO 来允许此选项

或者你可以在 php.ini 中禁用它

如果由于您在共享主机上或出于其他原因而无法执行这些操作中的任何一项,请在代码中解决。

function write($resource,$string,$length)
    if (get_magic_quotes_gpc()) {
        $string = stripslashes($string);

    }
    return fwrite($resource, $string,$length);
}
于 2012-06-19T19:37:04.420 回答
1

如果您使用的是单引号字符串,则不应使用带有反斜杠的转义双引号,因为它们是按字面解释的。

文档

注意:与双引号和heredoc 语法不同,特殊字符的变量和转义序列在出现在单引号字符串中时不会被扩展。

于 2012-06-19T19:29:06.157 回答
0

我有一个类似的问题,但有一个 $_POST['body'] 变量。这对我有用:

str_replace("\\", "", $_POST['body']);
于 2014-12-16T15:03:52.860 回答