繁体   English   中英

PHP Glob,排除名称中包含.file的目录

[英]PHP Glob, exclude directories containing .files in their name

我正在使用glob在索引文件所在的当前目录中查找目录。 在其中,我保存了从EXCEL提取的html页面,它们创建了以.files结尾的文件夹目录。是否有办法遍历所有目录但排除以.files结尾的目录?

这是我目前的代码:

<?php
// set to current directory 
$dir = '';

// directories only. ignore files, etc.
foreach(glob($dir.'*', GLOB_ONLYDIR) as $folder){ 
// do not include wordpress directories
  if (($folder != '*') && ($folder != 'ΦΥΛΑΚΕΣ ΠΡΑΤΗΡΙΩΝ.files') && ($folder != 'wp-includes')) { 
  // list directories and their links
?> 
    <li><a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></li> 
<?php 
  }
} 
?>

编辑:如您所见,我可以排除指定的文件夹,但是我希望它自动排除以.files结尾的所有文件夹,正如我所说。

您可以使用substr -function执行以下操作:

<?php
// set to current directory 
$dir = '';

// directories only. ignore files, etc.
foreach( glob( $dir.'*', GLOB_ONLYDIR ) as $folder ){ 
// do not include wordpress directories
  if( ($folder != '*') && (substr( $folder , -6 ) != '.files') && ($folder != 'wp-includes') ){ 
  // list directories and their links
?> 
    <li>
      <a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></a>
    </li> 
<?php 
  }
} 
?>

我宁愿使用preg_grep函数

$src = glob("*",GLOB_ONLYDIR);
$nomatch = preg_grep("/.*\.files$|^wp\-includes$/i",$src,PREG_GREP_INVERT);

foreach($nomatch as $folder)
{
    echo "print ".$folder;
}

选择后的格式很简单

很抱歉,我的信息不正确,我在这里写

<?php
$cur = getcwd();
chdir($dir);
$src = glob("*",GLOB_ONLYDIR);
chdir($cur);
$nomatch = preg_grep("/.*\.files$|^wp\-includes$/i",$src,PREG_GREP_INVERT); 

foreach($nomatch as $folder)
{
?>
   <li><a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></li>
<?php
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM