怎么在PHP中获取目录中的全部内容

怎么在PHP中获取目录中的全部内容?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站制作、彰武网络推广、小程序开发、彰武网络营销、彰武企业策划、彰武品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供彰武建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

$path = $argv[1];

// 获取目录下所有内容
$dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($dirs as $k=>$d){
    echo 'key:'. $k, PHP_EOL;
    if($d->isDir()){
        echo $d->getPathname(), PHP_EOL;
    }else{
        echo $d->getFilename(), PHP_EOL;
    }
}

//执行 php PHP获取目录中的全部内容RecursiveDirectoryIterator.php ../

// key:../.
// ../.
// key:../..
// ../..
// key:../source
// ../source
// key:../source/.
// ../source/.
// key:../source/..
// ../source/..
// key:../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// key:../source/PHP大文件读取操作.php
// PHP大文件读取操作.php
// key:../PHP大文件读取操作.md
// PHP大文件读取操作.md
// key:../PHP获取目录中的全部内容RecursiveDirectoryIterator.md
// PHP获取目录中的全部内容RecursiveDirectoryIterator.md

其实就一行代码,然后直接循环输出这个迭代器。从结果中我们可以看出,先进入 source 目录遍历完成后再遍历外部的文件内容,按照目录、文件名的顺序依次获取了目录下的所有内容。是不是比我们自己写递归函数要方便很多。

如果我们想获取目录下的所有PHP文件,并且计算他们的文件总大小呢?使用这一套迭代器操作也可以非常简单的完成,我们只需要增加一个正则迭代器对前面的迭代器内容进行一下过滤就好了:

// 获取所有php文件
$regIts = new RegexIterator($dirs, '/^.+\.php$/i');
$fileSize = 0;
foreach($regIts as $k=>$p){
    echo $p->getSize() . ' ' .  $k, PHP_EOL;
    $fileSize += $p->getSize();
}
echo 'Total ', $fileSize, PHP_EOL;

// 622 ../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// 869 ../source/PHP大文件读取操作.php
// Total 1491

感觉就和 ls -l 一样,可以方便的让我们能够进行目录下的相关操作。这个类的使用就简单的介绍到这里,关于SPL库中还有许多值得我们探索的能力,慢慢学习慢慢实践,不断提升我们面向优雅编程的能力。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


新闻名称:怎么在PHP中获取目录中的全部内容
本文路径:http://scyanting.com/article/ggcpde.html