在 scandir 数组中包含 JUST 文件?

新手上路,请多包涵

我有一个从 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"
}

我如何从阵列中删除 "."".."

原文由 Rbn 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 689
2 个回答

您可以使用 array_filter

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

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

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

原文由 leftclickben 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 scandir 中删除点作为文件的最快方法

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

来自 PHP 手册

原文由 mintedsky 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题