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
Форумы портала PHP.SU :: Версия для печати :: Поиск слова по файлам.
Форумы портала PHP.SU » Разное » Прочее » Поиск слова по файлам.

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

1. Predator - 08 Июля, 2012 - 10:37:45 - перейти к сообщению
Есть ли программа которая осуществляла поиск указанного слова, по всем файлом в указанной папке?
2. Vinyl - 08 Июля, 2012 - 10:47:49 - перейти к сообщению
Дык сами напишите.

К примеру, ф-я открывает файлы по очереди (пока они есть в папке), в них регулярным выражением ищет слова (передаются параметром). Если вложенные каталоги нужны - рекурсия в помощь.
3. Predator - 08 Июля, 2012 - 11:43:29 - перейти к сообщению
Я знаю Радость . Просто хотелось ускорить процесс Ха-ха
4. armancho7777777 - 08 Июля, 2012 - 11:54:49 - перейти к сообщению
Что-то типа этого:
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.  


В остальном сами доработаете я думаю)
5. DlTA - 08 Июля, 2012 - 16:32:17 - перейти к сообщению
всевозможные командеры (фар, тотал, виндовскомандер, ...), или хотябы виндовый поиск
6. armancho7777777 - 08 Июля, 2012 - 16:38:09 - перейти к сообщению
Блин, я думал на PHP ему надо, для сайта Радость
7. Predator - 08 Июля, 2012 - 21:29:57 - перейти к сообщению
Улыбка

 

Powered by ExBB FM 1.0 RC1