2016-07-02 8 views
2

私はphpを使ってディレクトリ内のファイルを修正しようとしていますが、古いコンテンツに新しいコンテンツを追加してしまいます。私はここで私はあなたがPHPから、そのためのフラグを使用することができますファイルの内容を変更するためのPHPコード

<?php 

$fn = "mod.php"; 
$file = fopen($fn, "a+"); 
$size = filesize($fn); 
$filecontent = $_POST['addition']; 

if($_POST['addition']) { 
fwrite($file, $_POST['addition']); 
} 

$text = fread($file, $size); 
fclose($file); 

?> 

<form action="<?=$PHP_SELF?>" method="post"> 
<input type="text" name="addition" value="<?php echo $fn;?>"/><br/> 
<textarea name="addition"><?php echo $text;?></textarea><br/> 
<input type="submit" value="update"/> 
</form> 
+0

コンテンツを「追加」した後で、ファイルコンテンツの内容を指定できますか? – Barry

答えて

0

str_replace()関数を使用して、古いファイルの内容を新しいものに置き換えることで変更できます。

<?php 
    $fn = "mod.php"; 
    $file = fopen($fn, "a+"); 
    $handle = fopen($fn, "r"); 
    $size = filesize($fn); 
    $content = fread($handle,$size); 
    $text = fread($handle,$size); 


    if(isset($_POST['addition'])) { 
     $text = fread($file,$size); 
     $addition = $_POST['addition']; 
     $content = str_replace("$text", "$addition", $file); //$text can be content stored in the database while addition could be the replacement or new content. 
     $handle = fopen($fn,"w"); 
     fwrite($handle,$content); 
     fclose($handle); 
    } 
    ?> 
    <form action="" method="post"> 
    <input type="text" name="addition" value="<?php echo $fn;?>"/><br/> 
    <textarea name="addition"><?php echo $text;?></textarea><br/> 
    <input type="submit" value="update"/> 
    </form> 
0

を使用しようとしたものですので、私は古いもの

とにマージすることなく全体の内容を変更することができ、再び何をすべきか分かりません。ネット:あなたのケースでは

http://php.net/manual/en/function.file-put-contents.php

:追加。

FILE_APPENDファイルfilenameが既に存在する場合は、上書きするのではなくファイルにデータを追加します。

例:file_put_contents($ file、$ content、FILE_APPEND);

また、fopenを使用して、そこにパラメータとしてモードを指定することもできます。

+0

追加したくない新しいコンテンツで置き換えたい@wodi – Frank

関連する問題