php - 列出目录中的文件夹和文件

时间:2014-06-05 04:04:44

标签: php

您好我在使用以下功能列出目录中的所有文件和文件夹。

<?php

  function listFolderFiles($dir){

        $ffs = scandir($dir);

            foreach($ffs as $ff){

                echo $ff . "<br/>";

            }

    }

?>

但问题似乎是我正在获取目录中的所有文件夹,但我还得到...。类似下面的那个。

.
..
direc
img
music
New Text Document.txt

我正在使用以下功能:listFolderFiles('MyFolder');

我想要做的是获取所有文件夹和文件,但不是...,我做错了什么,我怎样才能得到我想要的东西。谢谢!

3 个答案:

答案 0 :(得分:2)

轻松摆脱scandir()在Linux环境中选择的点:

<?php
$ffs = array_diff(scandir($dir), array('..', '.'));
?>

答案 1 :(得分:2)

您可以非常轻松地使用glob,这会将文件名放入数组中:

print_r(glob("*.*"));

示例:

// directory name
$directory = "/";

// get in directory
$files = glob($directory . "*");

$d = 0; // init dir array count
$f = 0; // init file array count

// directories and files
foreach($files as $file) { 
    if(is_dir($file)) {
        array($l['directory'][$d] =  $file);
        $d++;
    } else {
        array($l['file'][$f] = $file);
        $f++;
    }
}

print_r($l);

注意scandir也会选择隐藏文件,例如.htaccess等。这就是为什么应该考虑使用glob方法,除非你想要告诉他们。

答案 2 :(得分:0)

应该这样做!

<?php

function listFolderFiles($dir){
    $ffs = scandir($dir);
    foreach($ffs as &$ff){

        if ($ff != '.' && $ff != '..') {
            echo $ff . "<br/>";
        }
    }
}

?>