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]   

> Описание: Поиск слова по файлам.
Predator
Отправлено: 08 Июля, 2012 - 10:37:45
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


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

[+][+][+]


Есть ли программа которая осуществляла поиск указанного слова, по всем файлом в указанной папке?
 
 Top
Vinyl
Отправлено: 08 Июля, 2012 - 10:47:49
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 645
Дата рег-ции: Янв. 2012  
Откуда: Армавир, Краснодарский край


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




Дык сами напишите.

К примеру, ф-я открывает файлы по очереди (пока они есть в папке), в них регулярным выражением ищет слова (передаются параметром). Если вложенные каталоги нужны - рекурсия в помощь.


-----
Пессимисты пользуются die(), оптимисты - exit()
 
 Top
Predator
Отправлено: 08 Июля, 2012 - 11:43:29
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


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

[+][+][+]


Я знаю Радость . Просто хотелось ускорить процесс Ха-ха
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Июля, 2012 - 11:54:49
Post Id



Активный участник


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


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




Что-то типа этого:
PHP:
скопировать код в буфер обмена
  1.  
  2. function str_search($path, $extension, $str)
  3. {
  4.         $file_arr = array();
  5.         foreach (glob(rtrim($path, '/')."/*.".$extension) as $filename)
  6.         {
  7.                 if(strstr(file_get_contents($filename), $str) != false)
  8.                 $file_arr[] = $filename;
  9.         }
  10.         return $file_arr;
  11. }
  12.  
  13. str_search('my_dir', 'txt', 'строка поиска');
  14.  

Функция вернёт массив файлов удовлетворивших запрос.

И второй вариант, с рекурсией и дополнительными параметрами.
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function str_search($path, $str, $extension = null, $assoc = false)
  4. {
  5.    $_file_arr = array();
  6.    
  7.         function _str_search(&$_file_arr, $path, $str, $extension = null, $assoc = false)
  8.         {
  9.                 foreach (scandir($path) as $filename)
  10.                 {
  11.                         if($filename == '.' || $filename == '..') continue;
  12.  
  13.                         if(is_dir($path.'/'.$filename))
  14.                         _str_search($_file_arr, $path.'/'.$filename, $str, $extension, $assoc);
  15.                         else
  16.                         {
  17.                                 if(
  18.                                 !empty($extension) &&
  19.                                 !in_array(pathinfo($filename, PATHINFO_EXTENSION),
  20.                                 explode(',', str_replace(' ', '', $extension)))
  21.                                 ) continue;
  22.                                
  23.                                 if(mb_stristr(file_get_contents($path.'/'.$filename), $str) != false)
  24.                                 {
  25.                                         if($assoc == true)
  26.                                         $_file_arr[$path][] = $filename;
  27.                                         else
  28.                                         $_file_arr[] = $path.'/'.$filename;
  29.                                 }
  30.                         }
  31.                 }
  32.         }
  33.        
  34.         if(!file_exists($path))
  35.         echo 'Нет указанного файла, или каталога';
  36.         else
  37.         {
  38.                 _str_search($_file_arr, $path, $str, $extension, $assoc);
  39.                 return $_file_arr;
  40.         }
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47. // Если не указывать третий параметр, то вернёт все файлы, удовлетворивших запрос.
  48. // Если параметр 4 == true, то вернёт ассоциативный структурированный массив,
  49. // где ключами являются пути, а значения - массивы имён файлов.
  50. // По умолчанию - false
  51.  
  52. print_r(str_search('директория', 'строка поиска', 'расширения файлов через запятую', 'логическое значение'));
  53.  
  54.  


В остальном сами доработаете я думаю)

(Отредактировано автором: 08 Июля, 2012 - 15:24:18)

 
 Top
DlTA
Отправлено: 08 Июля, 2012 - 16:32:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




всевозможные командеры (фар, тотал, виндовскомандер, ...), или хотябы виндовый поиск
 
 Top
armancho7777777 Супермодератор
Отправлено: 08 Июля, 2012 - 16:38:09
Post Id



Активный участник


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


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




Блин, я думал на PHP ему надо, для сайта Радость
 
 Top
Predator
Отправлено: 08 Июля, 2012 - 21:29:57
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 619
Дата рег-ции: Март 2012  
Откуда: Ярославль


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

[+][+][+]


Улыбка
 
 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