PHP_统计给定文件夹下所有文件中的总行数
只想计算文件夹中所有文件的行总数。下面的php函数帮助我只计算特定文件的行数。只是想知道如何控制文件夹中的行总数PHP_统计给定文件夹下所有文件中的总行数,php,Php,只想计算文件夹中所有文件的行总数。下面的php函数帮助我只计算特定文件的行数。只是想知道如何控制文件夹中的行总数 $lines = COUNT(FILE($file)); 谢谢 可能是这样的: <?php $line_count = 0; if ($handle = opendir('some/dir/path')) { while (false !== ($entry = readdir($handle))) { if (is_file($entry))
$lines = COUNT(FILE($file));
谢谢 可能是这样的:
<?php
$line_count = 0;
if ($handle = opendir('some/dir/path')) {
while (false !== ($entry = readdir($handle))) {
if (is_file($entry)) {
$line_count += count(file($entry));
}
}
closedir($handle);
}
var_dump($line_count);
?>
您可以迭代该目录,对每个文件进行计数,然后将它们相加。您使用的是
file()
函数,它会将整个内容加载到内存中,如果文件非常大,您的php脚本将达到配置文件的内存限制
如果您可以使用外部命令,那么有一个解决方案只有一行。(如果您使用的是windows,请忽略它。)
查看DirectoryIterator的标准PHP库(又名SPL):
$dir = new DirectoryIterator('/path/to/dir');
foreach($dir as $file ){
$x += (isImage($file)) ? 1 : 0;
}
(仅供参考,有一个名为iterator_count()的未记录函数,但我想现在最好不要依赖它。而且您需要过滤掉一些看不见的东西,比如。和..)
或者尝试以下方法:-
请参阅网址:-
计算行数的一个非常基本的示例可能如下所示,给出的数字与
与上面的一个相同(萨拉特的答案),除了这个打印行数(现在是php7)而不是一堆错误消息
$files = new RecursiveIteratorIterator(new
RecursiveDirectoryIterator(__DIR__));
$lines = 0;
foreach ($files as $fileinfo) {
if (!$fileinfo->isFile()) {
continue;
}
$read = $fileinfo->openFile();
$read->setFlags(SplFileObject::READ_AHEAD);
$lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l"
}
echo ("Found :$lines");
如果你想数一数桌子上书的页数,你会怎么做?在这里描述算法。然后将“桌面”替换为“文件夹”,将“书本”替换为“文件”,将“页面”替换为“行”。很可能您没有检查$entry
是否为文件。在这种情况下,您不需要检查它是
还是。
至少是用英语记录的。
$directory = "../images/team/harry/";
if (glob($directory . "*.jpg") != false)
{
$filecount = count(glob($directory . "*.jpg"));
echo $filecount;
}
else
{
echo 0;
}
<?php
$files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__));
$lines = $files = 0;
foreach ($files as $fileinfo) {
if (!$fileinfo->isFile()) {
continue;
}
$files++;
$read = $fileinfo->openFile();
$read->setFlags(SplFileObject::READ_AHEAD);
$lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l"
}
printf("Found %d lines in %d files.", $lines, $files);
$files = new RecursiveIteratorIterator(new
RecursiveDirectoryIterator(__DIR__));
$lines = 0;
foreach ($files as $fileinfo) {
if (!$fileinfo->isFile()) {
continue;
}
$read = $fileinfo->openFile();
$read->setFlags(SplFileObject::READ_AHEAD);
$lines += iterator_count($read) - 1; // -1 gives the same number as "wc -l"
}
echo ("Found :$lines");