PHP总是用反斜杠撇号替换撇号

PHP总是用反斜杠撇号替换撇号,php,Php,我有一个简单的PHP变量: $Title = $_POST['text']; 当它有这个输入时:这是文本 PHP将在写入文件时识别为:这里是文本 $Filename = 'index.php'; $Handle = fopen($Filename, "r"); $Contents = fread($Handle, filesize($Filename)); fclose($Handle); $TitleTag = extractor($Contents, "<title>", "

我有一个简单的PHP变量:

$Title = $_POST['text'];
当它有这个输入时:
这是文本

PHP将在写入文件时识别为:
这里是文本

$Filename = 'index.php';
$Handle = fopen($Filename, "r");
$Contents = fread($Handle, filesize($Filename));
fclose($Handle);

$TitleTag = extractor($Contents, "<title>", "</title>");

$Contents = str_replace ($TitleTag, $Title, $Contents); 
$Handle = fopen($Filename, 'w+');
fwrite($Handle, $Contents);
fclose($Handle);
$Filename='index.php';
$Handle=fopen($Filename,“r”);
$Contents=fread($Handle,filesize($Filename));
fclose($Handle);
$TitleTag=提取器($Contents,“,”);
$Contents=str_replace($TitleTag,$Title,$Contents);
$Handle=fopen($Filename'w+);
fwrite($Handle,$Contents);
fclose($Handle);

如何获得与用户键入的内容完全相同的内容?谢谢

简单快捷的解决方法是:

fwrite($handle,stripslashes($Contents));

或者,您可以让php将内容视为字符串格式,这也将正确返回转义字符:

fwrite($Handle,sprintf($Contents));
但是请注意,如果代码中有一个
%
字符,则必须加倍,否则
sprintf
会将其视为占位符:

fwrite($Handle,sprintf(str_replace('%','%%',$Contents)));

因此,这需要两个操作,并不是最好的方法,特别是因为我觉得您正在处理一个HTML字符串(
style='width:50%”
Check@air4x:Lol,也要检查,因为5.4 all中删除了神奇的引号together@EliasVanOotegem我并没有从这个问题中了解到OP使用的是PHP5.4。还有什么可以解释php在用户输入中向单引号添加反斜杠的原因呢?在PHP5.4中删除了反斜杠的情况在一个大的红色框中给出n魔法引号部分本身。@air4x:我投票支持你的评论,我完全同意:我认为OP也没有使用5.4,我只是忘记了禁用魔法引号作为可能的解决方案。为了完整性,我只想补充一点,魔法引号在最新版本中已从php中删除。