使用Glob在目录和子目录中获取图像

时间:2013-12-14 16:40:43

标签: php

我编写了一个PHP脚本来抓取某个目录中的所有图像并显示它们,虽然我希望能够在我指定的目录的子目录中显示图像。

例如,现在我的脚本只获取以下图像

上传/ prevImgs / 145323.png

上传/ prevImgs / 276531.png

id希望它获得以下内容

上传/ prevImgs / 145323.png

上传/ prevImgs / 276531.png

上传/ prevImgs / DIR1 / 12323.png

上传/ prevImgs / DIR2 / 212331.png

我当前的脚本如下

<?php
  // Directory Path Of Library Preview Images //
  $dirname = "uploads/prevImgs/";
  $images = glob("{$dirname}*.*");
  foreach($images as $image) {
    echo '<img src="'.$image.'" /><br />';
  }
?>
  

提前非常感谢!!!

2 个答案:

答案 0 :(得分:2)

您可以堆叠RecursiveDirectoryIterator和RecursiveIteratorIterator来获得您正在寻找的效果:

$rdi = new RecursiveDirectoryIterator("uploads/prevImgs/");
$it = new RecursiveIteratorIterator($rdi);
foreach($it as $oneThing)
    if (is_file($oneThing))
        echo '<img src="'.$oneThing.'" /><br />';

我知道,你必须采用RecursiveDirectoryIterator并在其上堆叠另一个迭代器才能使其工作,这似乎是违反直觉的。这方面的文件可能会更好。

答案 1 :(得分:1)

我可以建议使用RecursiveDirectoryIterator创建一个类来迭代文件(子)目录及其文件。与其中一个递归过滤器迭代器php一起提供的只能返回图像文件。

还有一个GlobIterator,但我不确定它是否也会进行递归迭代。