是否有可能使用PHP解析整个目录以查找dir中所有文件中的代码行数,以便可以使用PHP将此值输出到屏幕上?
答案 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)
是的,这是可能的。
<?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's或Artefacto's approach。