Я знаю, что glob
может искать все файлы или только все каталоги внутри папки:
echo "All files:\n";
$all = glob("/*");
var_dump($all);
echo "Only directories\n";
$dirs = glob("/*", GLOB_ONLYDIR);
var_dump($dirs);
Но я не нашел что-то, чтобы эффективно находить только файлы в одной строке.
$files = array_diff(glob("/*"), glob("/*", GLOB_ONLYDIR));
Хорошо работает, но дважды читает каталог (даже если есть некоторые оптимизации, которые делают второй просмотр быстрее).