怎么在PHP中获取目录中的全部内容?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。$path = $argv[1];// 获取目录下
怎么在PHP中获取目录中的全部内容?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
$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编程频道,感谢您对编程网的支持。
--结束END--
本文标题: 怎么在PHP中获取目录中的全部内容
本文链接: https://www.lsjlt.com/news/278798.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0