2016-07-04 8 views
-4

txtファイルの1行を削除するには? TXTでphpのtxtファイルの1行を削除するには?

1 
2 
3 
4 
5 
6 

私はその後行うTXTファイルに金曜日の行を削除したいですか?

結果は

1 
2 
3 
4 
5 

事前にあなたにみんなに感謝です!

+1

あなたは完全なファイルを読んで、編集して書き戻してください。 – splash58

+0

'PHP read file'と' PHP loop'を検索しようとしましたか? – PaulH

+0

表示されたtxtに金曜日の行はありません – PaulH

答えて

0

file関数は、(配列として)ファイルの内容を返すだけで、その配列で何をしても、ファイルではなく配列が変更されます。変更を保持するには、バックファイルの内容を書き込む:

reference for file function

$filename = 'test.txt'; 
    $arr = file($filename); 
    if ($arr === false) { 
     die('Failed to read ' . $filename); 
    } 
    array_pop($arr); 
    file_put_contents($filename, implode(PHP_EOL, $arr)); 
+0

彼は何を学びましたか? – PaulH

0

をファイルから最後の行を削除するように見えます。
filearray_slicefile_put_contents機能で、次のアプローチを使用します。

$file_name = "weekdays.txt"; // chanhe to your file name 
$lines = file($file_name); // read the file as an array of lines 
$lines = array_slice($lines, 0, -1); // 'trimming' the last line 
file_put_contents($file_name, implode("", $lines)); // writes the remained lines back to file 
0

大きいファイルの場合は、おそらく全体の内容を読み取り、バック、それを書き込まないようにしたいです。

代わりにftruncate()関数を使用できます。しかし、最初に最後の行の長さを決定する必要があります。以下のコードは、ファイルの終わりから始めて、最初のCRまたはLF文字を見つけることによってそれを行います。見つかった場合、直前に別のCRまたはLFがあるかどうかをチェックします(したがって、最も一般的な行末形式をカバーします)。

$file = 'myFile.txt'; 

if(($h = fopen($file, 'r+')) === false) { 
    throw new Exception('Failed to open file'); 
} 

$sz = filesize($file); 

for($n = -1; $n >= -$sz; $n--) { 
    fseek($h, $n, SEEK_END); 
    $chr = fgetc($h); 

    if($chr == "\n" || $chr == "\r") { 
    fseek($h, $n - 1, SEEK_END); 
    $chr = fgetc($h); 

    if($chr == "\n" || $chr == "\r") { 
     $n--; 
    } 

    ftruncate($h, $sz + $n); 
    break; 
    } 
} 
fclose($h); 
関連する問題