发布内容为cmd命令行:移动“D:\ my 1.txt”“D:\ my 2.txt”
我的PHP代码:
if (!empty($_POST["mechat"])){
$mechat = fopen("mechat","w");
fwrite($mechat,$_POST['mechat']);
}
错误的结果:移动\“D:\ my 1.txt \”\“D:\ my 2.txt \”
答案 0 :(得分:2)
PHP语法保留'\'字符。您可以在命令中的任何反斜杠之前添加另一个反斜杠来覆盖它。例如,创建命令move "D:\\my 1.txt" "D:\\my 2.txt"
。您还可以使用PHP内置的stripslashes
函数。这将它们指定为有效字符,PHP忽略它们。
答案 1 :(得分:2)
您的服务器上可能已启用magic quotes。它会在输入变量中引用字符之前自动添加\
,以防止SQL注入。
使用它是no longer recommended,它随着PHP 5.3的发布而被弃用,并且从PHP 5.4开始被删除。您可以disable it或使用stripslashes功能从输入中删除转义字符。
答案 2 :(得分:1)
您可以使用stripslashes
函数从字符串中删除转义斜杠。
因此,在您的情况下,您需要使用fwrite($mechat,stripslashes($_POST['mechat']));
。这样,当你有需要转义的字符时,stripslashes函数会为你做这个,它应该输出正常。