首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RecursiveDirectoryIterator删除点文件夹

RecursiveDirectoryIterator删除点文件夹
EN

Stack Overflow用户
提问于 2015-01-15 02:12:27
回答 2查看 3.7K关注 0票数 5

目前,我有下面的代码,这将是我能够在下面的代码中设置标志的最好方法,这样我就可以使用::SKIP_DOTS了。

代码:

代码语言:javascript
复制
  $folder = 'images/banner_img';?>

    <?php foreach( new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder)) as $filename): ?>
      <?php $fileTypes = array("db"); 
            $fileType  = pathinfo($filename,PATHINFO_EXTENSION);

            if(!in_array(strtolower($fileType), $fileTypes)):?>


         <img src="<?php echo $filename; ?>" alt="" title="" data-thumb="<?php echo $filename;?>" />

       <?php endif;?>

    <?php endforeach;?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-15 03:05:46

RecursiveDirectoryIterator::SKIP_DOTS 作为选项(在第二个参数中)设置为new RecursiveDirectoryIterator()应该足以处理当前代码。

使用PHP,您可以将5.3+声明为自己的变量,然后对该变量调用一个方法:

代码语言:javascript
复制
$iterator = new RecursiveDirectoryIterator($folder);
$iterator->setFlags(RecursiveDirectoryIterator::SKIP_DOTS);
// Still need to pass $iterator to a RecursiveIteratorIterator...

setFlags()是一种方法基类

但是,由于您已经在使用模板格式化foreach: / endforeach;样式,所以只在嵌套声明中这样做是有意义的,而不是使用其他变量。

代码语言:javascript
复制
<!-- Instead, stick with your current iterator declaration and -->
<!-- add RecursiveDirectoryIterator::SKIP_DOTS as the 2nd param to its constructor -->
<?php foreach( new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder, RecursiveDirectoryIterator::SKIP_DOTS)) as $filename): ?>
<!-------------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -->
票数 8
EN

Stack Overflow用户

发布于 2020-06-13 15:39:32

::SKIP_DOTS标志在一些机器上引发了一个错误GET / - Uncaught Error: Undefined class constant 'SKIP_DOTS'

替代波纹管跳过隐藏文件夹、隐藏文件和导航点. ..

代码语言:javascript
复制
$cwd = './targetdir';
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($cwd), RecursiveIteratorIterator::SELF_FIRST );

// Skip hidden directories and hidden files
foreach ( $iterator as $path ) {
  if(!$path->isFile()) continue;
  $dirname = explode("/",$path->__toString());
  $dirname = substr($dirname[count($dirname)-2], 0, 1);
  if($dirname === ".") continue;
  if(substr($path->getFilename(), 0, 1) === ".") continue;

  if ($path->isDir()) {
      print($path->__toString() . "<br>");
   } else {
      print($path->__toString() . "<br>");
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27955770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档