Есть сценарии, которые вы должны всегда иметь под рукой, потому что в конечном итоге, что вам нужно в самые неожиданные моменты и случаи. Эта функция в PHP, например, спас меня во многих случаях ненужной тратой времени, передавая в качестве аргумента строку, которая представляет собой полный путь для сканирования scan_directory_recursively функция возвращает массив, содержащий полную структуру указанного каталога.

Вы можете указать, как второй дополнительный аргумент, расширение или части текста, которые не обязательно будут появляться в имени файла. В основном это фильтр, чтобы исключить определенного класса результаты.

Например:

$dirs=scan_directory_recursively('/home/ivan/Tempo');

возвращает массив из всех каталогов и файлов в / главная / Иван / время, пока:

$dirs=scan_directory_recursively('/home/ivan/Tempo','.php');

возвращает массив из всех каталогов и файлов в / главная / Иван / время, за исключением файлов с расширением. PHP!

Это не мое дело, поэтому я прошу тех, кто использует в своих проектах не удалять ссылки на lixlpixel, Интернет-сайта, из которого они пришли.

Вот функция:


 <? Php

 / / Рекурсивные функции PHP ------------------------- lixlpixel

 / / Scan_directory_recursively (каталог для сканирования, фильтр)

 / / Ожидает путь к каталогу, и дополнительное расширение для фильтрации

 / / Конечно, PHP должен иметь права на чтение каталога

 / / Укажите Вас и всех файлов и папок в этом каталоге

 / / ------------------------------------------------ ------------


 / / Чтобы использовать эту функцию, чтобы получить все файлы и каталоги, в массив, пишут:

 / / $ Filestructure scan_directory_recursively = ('путь / к / директории');


 / / Чтобы использовать эту функцию для сканирования каталогов и фильтрации результатов, пишут:

 / / $ FileSelection scan_directory_recursively = ('каталог', 'расширение');


 scan_directory_recursively функции ($ директорию $ фильтр = false)

 {
    
 / / Если путь имеет косую черту в конце мы удаляем ее здесь
    
 если (подстрока ($ каталоге, -1) == '/')
    
 {
        
 Каталог $ = подстрока ($ каталоге, 0, -1);
    
 }

    
 / / Если путь неправильный, или не является каталогом ...
    
 если (file_exists ($ каталог) | |! is_dir ($ каталоге))
    
 {
        
 / / ... 
 мы возвращаемся ложные и выходим из функции
        
 return FALSE;

    
 / / ... 
 еще, если путь доступен для чтения
    
 Elseif} (is_readable ($ каталоге))
    
 {
        
 / / Мы открываем каталог
        
 $ Directory_list = opendir ($ каталогов);

        
 / / И поиск по элементам внутри
        
 а (FALSE! == ($ = файл READDIR ($ directory_list)))
        
 {
            
 / / Если filepointer не в текущем каталоге
            
 / / Или в родительскую директорию
            
 если ($ файл! = '.' && $ файл! = '..')
            
 {
                
 / / Мы строим новый путь для сканирования
                
 $ PATH = $ каталога '/' $ File..

                
 / / Если путь доступен для чтения
                
 если (is_readable ($ путь))
                
 {
                    
 / / Мы разделили новый путь по каталогам
                    
 $ Подкаталоги = explode ('/', $ PATH);

                    
 / / Если новый путь каталогов
                    
 если (is_dir ($ путь))
                    
 {
                        
 / / Добавляем каталог деталей к списку файлов
                        
 $ Directory_tree [] = массив (
                            
 «Путь» => $ путь,
                            
 "Имя" => конец ($ подкаталоги),
                            
 "Вид" => "каталог",

                            
 / / Мы сканируем новый путь с помощью этой функции
                            
 "Содержание" => scan_directory_recursively ($ PATH, $ фильтр));

                    
 / / Если новый путь файла
                    
 Elseif} (is_file ($ PATH))
                    
 {
                        
 / / Получаем расширение файла, принимая все, что после последней точки
                        
 Расширение $ = конец (explode (, End ($ подкаталоги)) '.');

                        
 / / Если нет фильтра в сентябре или фильтр установлен и спички
                        
 если ($ фильтр === FALSE | | $ фильтра == $ расширением)
                        
 {
                            
 / / Добавляем файл детали к списку файлов
                            
 $ Directory_tree [] = массив (
                                
 «Путь» => $ путь,
                                
 "Имя" => конец ($ подкаталоги),
                                
 "Расширение '=> $ расширение
                                
 'Размер' => размер файла ($ путь),
                                
 "Вид" => "файл");
                        
 }
                    
 }
                
 }
            
 }
        
 }
        
 / / Закрываем каталог
        
 closedir ($ directory_list); 

        
 / / Вернуть список файлов
        
 return $ directory_tree;

    
 / / Если путь не читается ...
    
 Else {}
        
 / / ... 
 мы возвращаемся ложные
        
 return FALSE;
    
 }

 }

 / / ------------------------------------------------ ------------


 >

Для Вашего удобства, но и мой собственный, я добавлю здесь версия без комментариев и готовы для скачивания:

Отправить эту содержания:
  • del.icio.us
  • Google Bookmarks
  • Digg
  • Facebook
  • Technorati
  • MySpace
  • Twitter