PHP如何防止PHP转义html fopen fwrite

PHP如何防止PHP转义html fopen fwrite,php,html,escaping,Php,Html,Escaping,我正在尝试制作一个应用程序,它可以让我更轻松地创建HTML文档 它主要起作用,只是当我写入文件时,它会添加反斜杠 <a href=\"google.com\">google</a> 你知道如何阻止它这样做吗 我成功了!如果在将其写入文件之前删除stripslashes(),它将保存/创建该文件,而不删除\ 谢谢你的帮助 如果使用单引号字符串,则不应使用带反斜杠的转义双引号,因为它们是按字面意思解释的 从: 注意:与双引号和heredoc语法不同,特殊字符的变量和转义

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

它主要起作用,只是当我写入文件时,它会添加反斜杠

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

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

我成功了!如果在将其写入文件之前删除stripslashes(),它将保存/创建该文件,而不删除\
谢谢你的帮助

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

从:

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


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

从:

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


这可能是因为magic quotes处于启用状态,如果您不想每次都使用stripslashes,您应该在php.ini文件中或使用类似以下内容的htaccess文件禁用它们:

在php.ini文件中:

或在.htaccess文件中:

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

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

来源:

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

在php.ini文件中:

或在.htaccess文件中:

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

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

来源:

此行为是由PHP的弃用指令引起的,您的指令仍然处于激活状态,因为在5.4之前的任何默认PHP安装中,默认情况下都是如此。除非指定长度参数,否则将查看它是否将转义

要关闭它,您可以放置

php_flag magic_quotes_gpc Off
在文件中,您需要使用ApacheDSO来允许此选项

或者你可以

如果由于共享主机或其他原因而无法执行这两项操作,请在代码中解决

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

    }
    return fwrite($resource, $string,$length);
}

这种行为是由PHP的弃用指令引起的,您的指令仍然处于激活状态,在5.4之前的任何默认PHP安装中都是默认状态。除非指定长度参数,否则将查看它是否将转义

要关闭它,您可以放置

php_flag magic_quotes_gpc Off
在文件中,您需要使用ApacheDSO来允许此选项

或者你可以

如果由于共享主机或其他原因而无法执行这两项操作,请在代码中解决

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

    }
    return fwrite($resource, $string,$length);
}

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

str_replace("\\", "", $_POST['body']);

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

str_replace("\\", "", $_POST['body']);


你能用你的fwrite调用发布代码吗;它添加反斜杠,有没有“stripslashes”函数?你有没有试着回显$which字符串看看是否有问题?我没有问我的同伴飞越过的问题,我只是建议他试试:)通过禁用所有与
magic\u quotes
…你能用你的fwrite调用发布代码吗?fwrite($fp,stripslashes($which));它添加反斜杠,有没有“stripslashes”函数?你有没有试着回显$which字符串,看看里面是否有小故障?我没有问我的同伴飞越的问题,我只是建议他试试:)通过禁用与
magic\u quotes
有关的所有内容……无法访问php.ini文件(共享服务器)htaccess文件无法添加.htaccess文件??你甚至不能在php脚本所在的地方创建htaccess文件?我不明白为什么这是不可能的,但如果是这样的话,每次我猜你都必须添加StripSlash。/me从两个方面看,以确保没有人在看|我真的不理解htaccess文件我在它的末尾添加了命令php_flag magic_quotes_gpc Off,但它没有做什么,所以我删除了它(不想搞乱我不懂的东西)我用它来设置404,这是关于itOk的。那么要放在开头的php示例代码呢?它是否与stripslashes函数一起工作?您是否也尝试将.htaccess文件放在网站的根目录下?文件名是“htaccess”还是“.htaccess”?还要确保它没有像windows那样的隐藏扩展名,即“.htaccess.txt”无法访问php.ini文件(共享服务器)和htaccess文件无法添加.htaccess文件??你甚至不能在php脚本所在的地方创建htaccess文件?我不明白为什么这是不可能的,但如果是这样的话,每次我猜你都必须添加StripSlash。/me从两个方面看,以确保没有人在看|我真的不理解htaccess文件我在它的末尾添加了命令php_flag magic_quotes_gpc Off,但它没有做什么,所以我删除了它(不想搞乱我不懂的东西)我用它来设置404,这是关于itOk的。那么要放在开头的php示例代码呢?它是否与stripslashes函数一起工作?您是否也尝试将.htaccess文件放在网站的根目录下?文件名是“htaccess”还是“.htaccess”?还要确保它没有像windows那样的隐藏扩展名,即“.htaccess.txt”。如果这回答了问题,请解释原因。你的回答似乎与问题中的问题不同(但可能相关)。如果这回答了问题,请解释原因。你的答案似乎解决了一个与问题中的问题不同(但可能相关)的问题。