PHP:如果超过50行,则清除文本文件


PHP: clear a text file if it exceeds 50 lines

好的,我错过了什么? 我试图清除文件超过50行。

这就是我到目前为止所拥有的。

1
2
3
4
5
6
$file = 'idata.txt';
$lines = count file($file);
if ($lines > 50){
$fh = fopen( 'idata.txt', 'w' );
fclose($fh);
}


1
2
3
4
5
6
$file = 'idata.txt';
$lines = count(file($file));
if ($lines > 50){
$fh = fopen( 'idata.txt', 'w' );
fclose($fh);
}


您的语法有错误,应为count(file($file));不建议对较大的文件使用此方法,因为它会将文件加载到内存中。 因此,对于大文件,它将没有用处。 这是另一种解决方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$file="idata.txt";
$linecount = 0;
$handle = fopen($file,"r");
while(!feof($handle)){
  if($linecount > 50) {
      //if the file is more than 50
      fclosh($handle); //close the previous handle

      // YOUR CODE
      $handle = fopen( 'idata.txt', 'w' );
      fclose($handle);  
  }
  $linecount++;
}


如果文件真的很大,你最好循环:

1
2
3
4
5
6
7
8
9
10
11
$file="verylargefile.txt";
$linecount = 0;
$handle = fopen($file,"r");
while(!feof($handle)){
  $line = fgets($handle);
  $linecount++;
  if(linecount > 50)
  {
      break;
  }
}

应该做的工作,而不是内存中的整个文件。


count的语法是错误的。将此行放在count file($file);

count(file($file));