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

时间:2012-11-06 12:52:01

标签: php

我有这个简单的PHP变量:

$Title = $_POST['text'];

当它有此输入时:here's the text

当PHP写入文件时,它将识别为:here\'s the text

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

如何准确地获取用户键入的内容?感谢

1 个答案:

答案 0 :(得分:2)

快速简单的修复方法是:

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

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

fwrite($Handle,sprintf($Contents));

但是,如果您的代码中某处有%个字符,那就太累了,如果不是sprintf将其视为占位符,那么它必须加倍:

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

这需要两个操作,并不是最好的方法,特别是因为我得到的印象是你正在处理一个HTML字符串(style='width:50%'&lt; - 并非完全不可能)