【发布时间】:2017-07-23 18:59:42
【问题描述】:
我有一个文件夹 store_files,下面有多个子文件夹。现在我可以获得所有文件夹和所有文件。现在我想获取所有文件夹,除了 zip 文件之外别无其他。我尝试添加条件,如果文件扩展名等于 zip 但似乎不起作用。如果我添加 $ext == 'zip' ,输出中不会显示任何内容。是否有另一种获取特定文件的方法,例如在图像中有glob($getDirectory. '*.zip')
function listFolderFiles($dir){
$ffs = scandir($dir);
echo '<ol>';
foreach($ffs as $ff){
$ext = pathinfo($ff, PATHINFO_EXTENSION);
if($ff != '.' && $ff != '..' && $ext == 'zip'){
echo '<li>';
$str = preg_replace('/\D/', '', $ff);
$str = substr($str, 0,-1);
$getYear = substr($str, 0,4);
$getMonth = substr($str, -4,2);
$getDay = substr($str, -2,2);
$theDate = $getYear.'-'.$getMonth.'-'.$getDay;
$theRealDate = date('Y M j', strtotime($theDate));
echo $theRealDate;
if(is_dir($dir.'/'.$ff)){
listFolderFiles($dir.'/'.$ff);
}
echo '</li>';
}
}
echo '</ol>';
}
listFolderFiles('store_files');
【问题讨论】:
-
你为什么不用
glob()? -
不是直接的,
glob()不能递归工作。但是您可以非常轻松地围绕它构建一个包装器。看看那个答案,例如:stackoverflow.com/questions/17160696/… -
@arkascha 或简单地使用 spl 迭代器
-
当然
glob()本身不能递归工作。但是可以轻松地将递归包装器构建为围绕它的 2 衬垫。