确定文件是否包含多于X行?

时间:2010-08-18 19:10:43

标签: php file count numbers lines

因为我无法找到一个检索文件行数的函数, 我需要使用

$handle = fopen("file.txt");

For($Line=1; $Line<=10; $Line=$Line+1){
 fgets($handle);
}

If feof($handle){
 echo "File has 10 lines or more.";
}Else{
 echo "File has less than 10 lines.";
}

fclose($handle)

或类似的东西?我想知道的是文件是否超过10行: - )。

提前致谢!

4 个答案:

答案 0 :(得分:4)

您可以使用以下方式获取行数:

$file = 'smth.txt';    
$num_lines = count(file($file));

答案 1 :(得分:2)

更快,更有记忆的资源:

$file = new SplFileObject('file.txt');
$file->seek(9);
if ($file->eof()) {
 echo 'File has less than 10 lines.';
} else {
 echo 'File has 10 lines or more.';
}

SplFileObject

答案 2 :(得分:2)

如果你有一个LARGE文件会出现这个更大的问题,PHP往往会减慢一些。为什么不运行exec命令让系统返回号码?然后,您不必担心读取文件的PHP开销。

$count = exec("wc -l /path/to/file");

或者如果你想得到更多的幻想:

$count = exec("awk '// {++x} END {print x}' /path/to/file");

答案 3 :(得分:0)

如果你有大文件,那么最好是段读取文件并计算“\ n”字符,或者什么是lineend字符,例如在某些系统上你还需要“\ r”计数器或其他什么..

$lineCounter=0;
$myFile =fopen('/pathto/file.whatever','r');
   while ($stringSegment = fread($myFile, 4096000)) {
$lineCounter += substr_count($stringSegment, "\n");
}