I know that glob
can look for all files or only all directories inside a folder :
echo "All files:\n"; $all = glob("/*"); var_dump($all); echo "Only directories\n"; $dirs = glob("/*", GLOB_ONLYDIR); var_dump($dirs);
But I didn't found something to find only files in a single line efficiently.
$files = array_diff(glob("/*"), glob("/*", GLOB_ONLYDIR));
Works well but reads directory twice (even if there are some optimizations that make the second browsing quicker).
To use Glob() to find files recursively, you need Python 3.5+. The glob module supports the "**" directive(which is parsed only if you pass recursive flag) which tells python to look recursively in the directories.
Use os.listdir() function The os. listdir('path') function returns a list containing the names of the files and directories present in the directory given by the path .
I finally found a solution :
echo "Only files\n"; $files = array_filter(glob("/*"), 'is_file'); var_dump($files);
But take care, array_filter will preserve numeric keys : use array_values if you need to reindex the array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With