.txt文件删除行但保留前10行?

时间:2014-12-15 21:27:04

标签: php if-statement storage

如何删除.txt文件中的行?但保持前十行?

到目前为止,这是我的代码:

   <?php 

$hiScore = $_POST['hiScore'] ? $_POST['hiScore'] : 'not set';

$theInput = $_POST['theInput'] ? $_POST['theInput'] : 'not set';

$file = fopen('LeaderBoard.txt','a+');
fwrite($file, ' '.$hiScore.' - Score                                                      Name: '.$theInput.'      '.PHP_EOL);
fclose($file);

$lines = file("LeaderBoard.txt");
natsort($lines);
$lines=array_reverse($lines);
file_put_contents("LeaderBoardScores.txt", implode("\n  \n \n  \n  \n  \n \n  \n", $lines));

$handle = fopen("LeaderBoardScores.txt");
$output = '';
$i = 0;
while (($line = fgets($handle)) !== false) {
    $output .= $line . "\n";
    if ($i++ >= 10)
        break;
}
fclose($handle);
file_put_contents($output, "Leader.txt");

?> 

我不确定如果staments在PHP中工作但是可能检查文件,如果lines = 10以上,不要在文件中发布任何内容?

人们看到的得分板:LeaderBoardScores.txt应该只看到前10名

LeaderBoard.txt是数据发布的位置,然后排序供人们在LeaderBoardScores.txt中查看

1 个答案:

答案 0 :(得分:4)

您可以使用fgets()遍历每一行,并在第10行之后突破:

<?php
$handle = fopen($path_to_file);
$output = '';
$i = 0;
while (($line = fgets($handle)) !== false) {
    $output .= $line . "\n";
    if ($i++ >= 10)
        break;
}
fclose($handle);
file_put_contents($output, $path_to_file);

http://php.net/manual/en/function.fgets.php

在这种情况下,while (($line = fgets($handle)) !== false)一次一个地循环遍历现有文件中的行。 $output收集行的内容。 $i计算到目前为止我们已添加到$output的行数,以便我们可以在合适的时间停止(break)。