0

私はこの単純な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);

ユーザーが入力したものとまったく同じように取得するにはどうすればよいですか?ありがとう

4

1 に答える 1

2

迅速で簡単な修正は次のようになります。

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

ドキュメントを参照する
か、phpでコンテンツを文字列形式として処理することもできます。これにより、エスケープ文字も正しく返されます。

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

ただし%、コードのどこかにcharがある場合は、2倍にする必要があります。そうでない場合はsprintf、プレースホルダーとして扱われます。

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

したがって、これには2つの操作が必要であり、特にHTML文字列を処理しているという印象を受けるため(style='width:50%'<-まったくありそうもないことではありません) 、最善のアプローチではありません。

于 2012-11-06T12:55:28.530 に答える