我正在尝试制作一个可以让我更轻松地创建 HTML 文档的应用程序。
它主要工作,除了当我写入文件时它添加反斜杠。
<a href=\"google.com\">google</a>
知道如何阻止它这样做吗?
我让它工作了!如果我在将它写入文件之前使用 stripslashes(),它将保存/创建没有 \ 的文件,谢谢您的所有帮助!
这可能是因为魔术引号打开了,如果您不想每次都使用 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
此行为是由 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);
}
如果您使用的是单引号字符串,则不应使用带有反斜杠的转义双引号,因为它们是按字面解释的。
从文档:
注意:与双引号和heredoc 语法不同,特殊字符的变量和转义序列在出现在单引号字符串中时不会被扩展。
我有一个类似的问题,但有一个 $_POST['body'] 变量。这对我有用:
str_replace("\\", "", $_POST['body']);