2

ファイルへの書き込みに制限を設ける方法。制限に達した場合は、最後の行を削除します。

例として、ファイルは次のとおりです。

Line 3
Line 2
Line 1

私はそれを3行だけ最大にしたい..だから、追加関数を使って新しい行を書くと、最後の行が削除される..新しい行を書いたとしましょう(行4)..だから最後に行きます1 つ削除すると、結果は次のようになります。

Line 4
Line 3
Line 2

そして、新しく書かれた行 (5 行目) の場合:

Line 5
Line 4
Line 3

数値行は必要ありません。追加関数(file_put_contents / fwrite)を介して新しく追加された行がある場合は最後の行を削除し、それを 3 または特定の数値で最大化したいだけです。

4

4 に答える 4

3

あなたが試すことができます

$max = 3;
$file = "log.txt";
addNew($file, "New Line at : " . time());

使用する機能

function addNew($fileName, $line, $max = 3) {
    // Remove Empty Spaces
    $file = array_filter(array_map("trim", file($fileName)));

    // Make Sure you always have maximum number of lines
    $file = array_slice($file, 0, $max);

    // Remove any extra line 
    count($file) >= $max and array_shift($file);

    // Add new Line
    array_push($file, $line);

    // Save Result
    file_put_contents($fileName, implode(PHP_EOL, array_filter($file)));
}
于 2012-10-22T15:57:16.620 に答える
1

1 つの方法を次に示します。

  1. file()ファイルの行を配列に読み込むために使用します
  2. count()配列に 3 つ以上の要素があるかどうかを判断するために使用します。もしそうなら:
    1. 配列の最後の要素を削除しますarray_pop()
    2. array_unshift()配列の先頭に要素 (新しい行) を追加するために使用します
    3. 配列の行でファイルを上書きします

例:

$file_name = 'file.txt';

$max_lines = 3;              #maximum number of lines you want the file to have

$new_line = 'Line 4';               #content of the new line to add to the file

$file_lines = file($file_name);     #read the file's lines into an array

#remove elements (lines) from the end of the
#array until there's one less than $max_lines
while(count($file_lines) >= $max_lines) {    
    #remove the last line from the array
    array_pop($file_lines);
}

#add the new line to the front of the array
array_unshift($file_lines, $new_line);

#write the lines to the file
$fp = fopen($file_name, 'w');           #'w' to overwrite the file
fwrite($fp, implode('', $file_lines)); 
fclose($fp); 
于 2012-10-22T15:50:47.197 に答える
0

これを試して。

<?php

// load the data and delete the line from the array 

$lines = file('filename.txt'); 
$last = sizeof($lines) - 1 ; 
unset($lines[$last]); 

// write the new data to the file 

$fp = fopen('filename.txt', 'w'); 
fwrite($fp, implode('', $lines)); 
fclose($fp); 

?>
于 2012-10-22T15:55:39.043 に答える
0

ババの答えから変更されました。このコードは、ファイルの先頭に新しい行を書き込み、最後の行を消去して、常に 3 行を維持します。

<?php
function addNew($fileName, $line, $max) {
    // Remove Empty Spaces
    $file = array_filter(array_map("trim", file($fileName)));

    // Make Sure you always have maximum number of lines
    $file = array_slice($file, 0, --$max);

    // Remove any extra line and adding the new line
    count($file) >= $max and array_unshift($file, $line);

// Save Result
file_put_contents($fileName, implode(PHP_EOL, array_filter($file)));
}

// Number of lines
$max = 3;
// The file must exist with at least 2 lines on it
$file = "log.txt";
addNew($file, "New Line at : " . time(), $max);

?>
于 2016-06-27T15:39:03.393 に答える