在扫描器数组中包含 JUST 文件?

2022-08-30 15:27:58

我有一个从scandir返回的数组,但它包含和,我不希望它。"."".."

我的代码:

$indir = scandir('../pages');
$fileextensions = array(".", "php", "html", "htm", "shtml");
$replaceextensions = str_replace($fileextensions, "", $indir);

我正在对文件扩展名进行字符串替换,从而导致[0]和[1]显示为空,但它们是和"."".."

array(4) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(4) "test"
[3]=>
string(4) "home"
}

如何从阵列中删除 和?"."".."


答案 1

您可以使用array_filter

$indir = array_filter(scandir('../pages'), function($item) {
    return !is_dir('../pages/' . $item);
});

请注意,这会过滤掉所有目录,只留下文件和符号链接。如果您真的只想仅排除以 开头的文件(和目录),则可以执行以下操作:.

$indir = array_filter(scandir('../pages'), function($item) {
    return $item[0] !== '.';
});

答案 2

将点作为文件删除扫描器中的最快的方法

$files = array_slice(scandir('/path/to/directory/'), 2); 

摘自 PHP 手册


推荐