glob('*.html')
будет работать, если все они находятся в одном каталоге.
Если вы хотите пройтись по дереву файлов - проверяя все в текущем каталоге, а также в подкаталогах и подкаталогах подкаталогов (и т. Д.), - у вас есть несколько вариантов.
Можно использовать команду unix find
с одним из методов вызова системы PHP. Что-то вроде:
find <search_root_dir> -name "*.html" -print</p>
<p>will get you output that looks something like</p>
<pre><code>search_root_dir/blah.html
search_root_dir/foo.html
search_root_dir/subdir/baz.html
search_root_dir/subdir/bah.html
...
Еще одна вещь, которую вы можете сделать, это написать рекурсивную функцию, которая использует chdir
и readdir
или, возможно, scandir
, что-то вроде:
function dir_walk($start_dir,$func) {
$entries = scandir($start_dir);
foreach($entries as $entry) {
if($entry == '.' || $entry == '..') {
/*skip these*/
} else if(is_dir($entry)) {
dir_walk($start_dir.'/'.$entry,$func);
} else $func($start_dir.'/'.$entry);
}
}
Затем напишите другую функцию:
$html_files = array();
function record_html_files($filename) {
global $html_files;
if(strpos($filename,'*.html') === (strlen($filename) - 6))
$html_files[] = $filename;
}
И назовите это так:
dir_walk('/path/to/search/root','record_html_files');
</code>
Или напишите dir_walk, чтобы он принимал объект с вызовом метода, который вы можете сделать внутри. Здесь возможны некоторые варианты.