您好我在使用以下功能列出目录中的所有文件和文件夹。
<?php
function listFolderFiles($dir){
$ffs = scandir($dir);
foreach($ffs as $ff){
echo $ff . "<br/>";
}
}
?>
但问题似乎是我正在获取目录中的所有文件夹,但我还得到.
和..
。类似下面的那个。
.
..
direc
img
music
New Text Document.txt
我正在使用以下功能:listFolderFiles('MyFolder');
我想要做的是获取所有文件夹和文件,但不是.
和..
,我做错了什么,我怎样才能得到我想要的东西。谢谢!
答案 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/>";
}
}
}
?>