PHP

Поиск файла в папке и всех подпапках. Пример рекурсии 2

В этой статье я покажу пример использования рекурсии. Для наглядности примера, переберем все файлы папки и подпапок. Перебирать файлы и подпапки будем рекурсивно. Чтобы было более наглядно, будем искать файл по имени. В случае нахождения файла выведем путь до файла.
Ниже приведен подробно прокомментированный код:
/**
* Поиск файла по имени во всех папках и подпапках
* 
* @param string $folderName - пусть до папки
* @param string $fileName - искомый файл
*/
function search_file($folderName, $fileName){
    // открываем текущую папку 
    $dir = opendir($folderName); 
    // перебираем папку 
    while (($file = readdir($dir)) !== false){ // перебираем пока есть файлы
        if($file != "." && $file != ".."){ // если это не папка
            if(is_file($folderName."/".$file)){ // если файл проверяем имя
                // если имя файла нужное, то вернем путь до него
                if($file == $fileName) return $folderName."/".$file;
            } 
            // если папка, то рекурсивно вызываем search_file
            if(is_dir($folderName."/".$file)) return search_file($folderName."/".$file, $fileName);
        } 
    }
    // закрываем папку
    closedir($dir);
}

Пример вызова функции
// пример использования
$folderName = "./files"; // в какой папке ищем
$fileName = "test.txt"; // что ищем
$result = search_file($folderName, $fileName);
if($result){
    echo $result;
}else{
    echo "Нет такого файла";
}
Теги:
Поиск
Добавлено: 10 Мая 2018 06:38:48 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...