glob('*.html') will work if they are all in the same directory.
If you want to go through the file tree - checking everything in the current directory and in subdirectories and subdirectories of subdirectories (etc.) - then you have several options.
One could use the unix find with one of the PHP system call methods. Sort of:
find <search_root_dir> -name "*.html" -print
will get you output that looks something like
search_root_dir/blah.html search_root_dir/foo.html search_root_dir/subdir/baz.html search_root_dir/subdir/bah.html ...
Another thing you can do is write a recursive function that uses chdir and readdir or possibly scandir , something like:
function dir_walk($start_dir,$func) { $entries = scandir($start_dir); foreach($entries as $entry) { if($entry == '.' || $entry == '..') { } else if(is_dir($entry)) { dir_walk($start_dir.'/'.$entry,$func); } else $func($start_dir.'/'.$entry); } }
Then write another function:
$html_files = array(); function record_html_files($filename) { global $html_files; if(strpos($filename,'*.html') === (strlen($filename) - 6)) $html_files[] = $filename; }
And name it as follows:
dir_walk ('/ path / to / search / root', 'record_html_files');
Or write dir_walk so that it accepts an object with a method call, which you can do internally. Some options are possible here.
source share