查找文件夹中的行数

时间:2010-06-22 16:30:08

标签: php

是否有可能使用PHP解析整个目录以查找dir中所有文件中的代码行数,以便可以使用PHP将此值输出到屏幕上?

4 个答案:

答案 0 :(得分:4)

$dit = new DirectoryIterator(".");
$count = 0;
$dit->rewind();
while ($dit->valid()) {
    if ($dit->isFile()) {
        foreach (new SplFileObject($dit->current()) as $line) {
            $count++;
        }
    }
    $dit->next();
}
echo $count; //output line count

要包含子目录:

$dit = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."));
$count = 0;
$dit->rewind();
while ($dit->valid()) {
    if ($dit->isFile()) {
        foreach (new SplFileObject($dit->current()) as $line) {
            $count++;
        }
    }
    $dit->next();
}
echo $count; //output line count

答案 1 :(得分:1)

这不会特别有效,但您可以在目录中加载每个文件并计算行数:

$total_lines = 0;
chdir($directory);

foreach (glob("*") as $file)
{
  if (is_file($file))
  {
    $total_lines += count(file($file));
  }
}

如果目录包含非文本文件,您可能需要更具限制性的glob构造。

答案 2 :(得分:0)

是的,这是可能的。

通过合并来自herehere的信息,您可以获得:

<?php
  if ($handle = opendir('.')) {
    $count = 0;
    while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != "..") {
        $lines = file($file); 
        $count += count($lines);
    }
    closedir($handle);
    echo($count);
  }
?>

答案 3 :(得分:0)

您可以使用PHPLOC

  

phploc是一种快速测量PHP项目大小和分析结构的工具。

将为您提供有关代码行(注释和非注释)的详细列表以及其他指标,如方法分布,圆柱复杂度等。

另一个选择是使用这个shell命令

echo (int) exec('wc -l filename.txt');

来自wc man page

  

wc - 打印文件中的换行符,单词和字节数

    -l, --lines
      print the newline counts

以编程方式,使用Daniel'sArtefacto's approach