PHP脚本循环遍历目录中的所有文件?

我正在寻找一个PHP脚本,通过目录中的所有文件循环,所以我可以做的事情与文件名,如格式,打印或将其添加到链接。 我想能够按名称,types或创build/添加/修改datesorting文件。 (想想目录“索引”。)我也想能够排除列表的文件,如脚本本身或其他“系统”文件。 (像... “目录”)。

因为我希望能够修改脚本,所以我更感兴趣的是查看PHP文档并学习如何编写自己的文档。 这就是说,如果有任何现有的脚本,教程和whatnot,请让我知道。

你可以使用DirectoryIterator 。 从PHP手册的例子:

 <?php $dir = new DirectoryIterator(dirname(__FILE__)); foreach ($dir as $fileinfo) { if (!$fileinfo->isDot()) { var_dump($fileinfo->getFilename()); } } ?> 

如果您无法访问DirectoryIterator类,请尝试以下操作:

 <?php $path = "/path/to/files"; if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ('.' === $file) continue; if ('..' === $file) continue; // do something with the file } closedir($handle); } ?> 

使用scandir()函数:

 <?php $directory = '/path/to/files'; if (! is_dir($directory)) { exit('Invalid diretory path'); } $files = array(); foreach (scandir($directory) as $file) { if ('.' === $file) continue; if ('..' === $file) continue; $files[] = $file; } var_dump($files); ?> 

你也可以使用FilesystemIterator 。 它需要更less的代码,然后DirectoryIterator ,并自动删除...

 $fileSystemIterator = new FilesystemIterator('images'); $entries = array(); foreach ($fileSystemIterator as $fileInfo){ $entries[] = $fileInfo->getFilename(); } var_dump($entries); //OUTPUT object(FilesystemIterator)[1] array (size=14) 0 => string 'aa[1].jpg' (length=9) 1 => string 'Chrysanthemum.jpg' (length=17) 2 => string 'Desert.jpg' (length=10) 3 => string 'giphy_billclinton_sad.gif' (length=25) 4 => string 'giphy_shut_your.gif' (length=19) 5 => string 'Hydrangeas.jpg' (length=14) 6 => string 'Jellyfish.jpg' (length=13) 7 => string 'Koala.jpg' (length=9) 8 => string 'Lighthouse.jpg' (length=14) 9 => string 'Penguins.jpg' (length=12) 10 => string 'pnggrad16rgb.png' (length=16) 11 => string 'pnggrad16rgba.png' (length=17) 12 => string 'pnggradHDrgba.png' (length=17) 13 => string 'Tulips.jpg' (length=10) 

链接: http : //php.net/manual/en/class.filesystemiterator.php

 $files = glob('folder/*.{jpg,png,gif}', GLOB_BRACE); foreach($files as $file) { //do your work here } 

glob()具有sorting和模式匹配的条款。 由于返回值是一个数组,所以你可以做大部分你需要的东西。

您可以使用此代码循环遍历一个目录:

 $path = "/home/myhome"; $rdi = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::KEY_AS_PATHNAME); foreach (new RecursiveIteratorIterator($rdi, RecursiveIteratorIterator::SELF_FIRST) as $file => $info) { echo $file."\n"; }