Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция поиска файлов по расширению

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как исключить папки с некоторыми именами?
Ley4ik_Russia
Отправлено: 18 Мая, 2011 - 07:35:07
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Март 2011  


Помог: 1 раз(а)




есть функция
PHP:
скопировать код в буфер обмена
  1. function dir_search($dir, &$buffer, $exts = false, $recursive = true, $with_dir = true){
  2.    
  3.     if ($exts){
  4.         $exts = explode(',',$exts);
  5.     }
  6.    
  7.     $buffer = findFiles($dir, $exts, $recursive, $with_dir);
  8.     foreach ($buffer as $i=>$file)
  9.         $buffer[$i] = str_replace('//','/',$file);
  10. }

она ищет файлы в указанной папке по расширению, как дописать чтобы в некоторых папках эта функция не искала, т.е. добавить в исключения?


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 Top
morosit
Отправлено: 18 Мая, 2011 - 09:07:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


Помог: 4 раз(а)




функция ищет файлы только в указаной папке
зачем указывать где не надо искать?
 
 Top
EuGen Администратор
Отправлено: 18 Мая, 2011 - 09:15:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ley4ik_Russia пишет:
findFiles($dir, $exts, $recursive, $with_dir);

Задачу, подозреваю, нужно адресовать этой функции.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Ley4ik_Russia
Отправлено: 18 Мая, 2011 - 09:21:01
Post Id



Гость


Покинул форум
Сообщений всего: 94
Дата рег-ции: Март 2011  


Помог: 1 раз(а)




EuGen пишет:
Ley4ik_Russia пишет:
findFiles($dir, $exts, $recursive, $with_dir);

Задачу, подозреваю, нужно адресовать этой функции.


PHP:
скопировать код в буфер обмена
  1. function findFiles($dir, $exts = null, $recursive = false, $with_dir = false){
  2.     $dir = replaceSl($dir);
  3.    
  4.     $result = array();
  5.     $check_ext = $exts;
  6.     if (!file_exists($dir)) return array();
  7.    
  8.     if ($handle = @opendir($dir))
  9.         while (($file = readdir($handle)) !== false){
  10.            
  11.             if ($file == '.' || $file == '..') continue;
  12.             if (is_file($dir . '/' . $file)){
  13.                
  14.                 if ($check_ext){
  15.                     if (checkExt($file, $exts))
  16.                         $result[] = $with_dir ? $dir .'/'. $file : $file;
  17.                 } else {
  18.                     $result[] = $with_dir ? $dir .'/'. $file : $file;
  19.                 }
  20.             } elseif ($recursive && is_dir($dir . '/' . $file)){
  21.                
  22.                 $result = array_merge($result, findFiles($dir . '/' . $file, $exts, true, $with_dir));
  23.             }
  24.         }
  25.    
  26.     return $result;
  27. }


потому что в windows есть папки типа System Volume information, к которым доступ закрыт


-----
Ubuntu Server 12.04.2 LTS, Apache2, PHP5, MySQL5
 
 Top
EuGen Администратор
Отправлено: 18 Мая, 2011 - 10:01:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Сделайте дополнительный параметр. Например, так:
PHP:
скопировать код в буфер обмена
  1. function findFiles($dir, $exts = null, $recursive = false, $with_dir = false, $rgFilter=array()){
  2.     $dir = replaceSl($dir);
  3.    
  4.     $result = array();
  5.     $check_ext = $exts;
  6.     if (!file_exists($dir)) return array();
  7.    
  8.     if ($handle = @opendir($dir))
  9.         while (($file = readdir($handle)) !== false){
  10.            
  11.             if ($file == '.' || $file == '..' || in_array($file, $rgFilter)) continue;
  12.             if (is_file($dir . '/' . $file)){
  13.                
  14.                 if ($check_ext){
  15.                     if (checkExt($file, $exts))
  16.                         $result[] = $with_dir ? $dir .'/'. $file : $file;
  17.                 } else {
  18.                     $result[] = $with_dir ? $dir .'/'. $file : $file;
  19.                 }
  20.             } elseif ($recursive && is_dir($dir . '/' . $file)){
  21.                
  22.                 $result = array_merge($result, findFiles($dir . '/' . $file, $exts, true, $with_dir, $rgFilter));
  23.             }
  24.         }
  25.    
  26.     return $result;
  27. }

В $rgFilter передавайте массив имён, которые надо исключить.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB