2017-02-16 38 views
0

Я пытаюсь найти все html-файлы в каталогах в корневом каталоге, у меня есть массив со всеми каталогами, и я пытаюсь пропустить каждый каталог в массиве, чтобы найти файлы и создать список, но он не работает, какие-либо идеи?php html файлы внутри каталогов в каталоге

$dirs = glob("/Root_directory*", GLOB_ONLYDIR); 

foreach($dirs as $dir) { 
    $phpfiles = glob($dir . "*.html"); 

    foreach($phpfiles as $phpfile) { 
     echo "<a href=$phpfile>".basename($phpfile)."</a>"; 
    } 
} 

Я также попытался подход рекомендуется here с помощью рекурсии, и это дало пустой массив

$Directory = new RecursiveDirectoryIterator('path/to/project/'); 
$Iterator = new RecursiveIteratorIterator($Directory); 
$Regex = new RegexIterator($Iterator, '/^.+\.php$/i', RecursiveRegexIterator::GET_MATCH); 
+2

«это не работает» - это не очень ясная проблема. Можете ли вы объяснить, что вы ожидаете от своего кода и что он делает? –

+0

Я ожидаю, что он будет создавать гиперссылки для всех html-файлов в каждом каталоге в главном каталоге, но при запуске PHP-кода он ничего не производит. –

+0

Кроме того, для такого рода проблем вы должны посмотреть на рекурсивное программирование. https://en.wikipedia.org/wiki/Recursion_(computer_science) – Twinfriends

ответ

0

Это рекурсивный метод, который работает после того, как много возился.

$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path),  RecursiveIteratorIterator::SELF_FIRST); 
$Regex = new RegexIterator($objects, '/^.+\.html$/i', RecursiveRegexIterator::GET_MATCH); 
foreach($Regex as $name => $Rege){ 
echo "<a href=$name>".$name."</a> \n"; 
}