脚本宝典收集整理的这篇文章主要介绍了在PHP中递归收集图像文件路径,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
下面是收集图像路径的循环的一部分,如果路径是文件夹而不是图像路径,它将遍历文件夹中的所有图像并将它们添加到图像阵列.
到目前为止,我已经在1个文件夹中为单个图像和图像工作了.我想修改下面的这一部分,以便它可以递归地再深入1个文件夹来获取图像路径.
有人可能会告诉我如何修改下面这个来完成这个吗?
// Get files if (is_dir($path)) { echo 'the path is a directory,grab images in this directory'; $handle = opendir($path); // FIXME : need to run recursively while(FALSE !== ($file = readdir($handle))) { if(is_dir($path.self::DS.$file)) { continue; } if( ! self::is_image($path.self::DS.$file)) { continue; } $files[] = $path.self::DS.$file; } closedir($handle); }else{ echo 'the path is an Image and NOT a directory'; if(self::is_image($path)) { echo 'assign image Paths to our image array to PRocess = '. $path. '<br><br>'; $files[] = $path; } } if (!count($files)) { throw new NoImageFoundException("Image not found : $path"); }
UPDATE
@Chris的回答让我看了Docs,我找到了一个我修改过的例子似乎有效
public static function find_recursive_images($path) { $ITerator = new RecursiveiteratorIterator(new Recursivedirectoryiterator($path),RecursiveIteratorIterator::CHILD_First); foreach ($iterator as $path) { if ($path->isDir()) { //skip directories continue; } else { $files[] = $path->__toString(); } } return $files; }
…
$files = self::find_recursive_images($path); echo '<pre>'; print_r($files); echo '</pre>'; exit();
输出只是文件名和这样的路径这是我的最终目标,到目前为止,这是完美的,但一如既往有一个更好的方式我所有的改善
( [0] => E:\Server\_ImageOptimize\img\testfiles\css3-generator.png [1] => E:\Server\_ImageOptimize\img\testfiles\css3-please.png [2] => E:\Server\_ImageOptimize\img\testfiles\css3-tools-10.png [3] => E:\Server\_ImageOptimize\img\testfiles\fb.jpg [4] => E:\Server\_ImageOptimize\img\testfiles\MysqL.gif [5] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\css3-generator.png [6] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\css3-please.png [7] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\css3-tools-10.png [8] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\fb.jpg [9] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\MysqL.gif [10] => E:\Server\_ImageOptimize\img\testfiles\OriginalImages\support-browsers.png [11] => E:\Server\_ImageOptimize\img\testfiles\support-browsers.png )
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)); while ($it->valid()) { if ($it->isDot()) continue; $file = $it->current(); if (self::is_image($file->pathName)) { $files[] = $file->pathName; } $it->next(); }
编辑:
或者,你可以尝试这个(从Zend_Translate_Adapter复制):
$it = new RecursiveIteratorIterator( new RecursiveRegexIterator( new RecursiveDirectoryIterator($dir,RecursiveDirectoryIterator::KEY_AS_PATHNAME),'/^(?!.*(\.svn|\.CVS)).*$/',RecursiveRegexIterator::MATCH ),RecursiveIteratorIterator::SELF_FIRST ); foreach ($it as $dir => $info) { var_dump($dir); }
干杯
克里斯
以上是脚本宝典为你收集整理的在PHP中递归收集图像文件路径全部内容,希望文章能够帮你解决在PHP中递归收集图像文件路径所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。