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 :: Проблема с рекурсивной функцией
Покинул форум
Сообщений всего: 43
Дата рег-ции: Март 2014
Помог: 0 раз(а)
Функция должна открывать все файлы в заданной директории, читать их содержимое в строку и проверять наличие в этой строке подстроки, если подстрока содержится, то заносить путь к файлу в массив $arFiles. В случае если заданная директория содержит вложенные директории, функция должна рекурсивно открывать и проверять все файлы во вложенных директориях.
Искомая подстрока передается из формы.
Вот код. Он не работает, т.к. скрипт не успевает выполниться.
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
scandir помимо элементов каталога возвращает еще два каталога '.' и '..' (текущий и уровнем выше)
ВЫ не проверяете элемент "на точку", а при проверке пути
Покинул форум
Сообщений всего: 43
Дата рег-ции: Март 2014
Помог: 0 раз(а)
DelphinPROДобавил проверку на '.' и '..'.
Ошибка исчезла, однако во вложенных директориях подстроку не ищет, только в заданной директории, то есть рекурсия не работает
LIME
Отправлено: 19 Января, 2015 - 11:44:27
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
$file = $scandir.$file;
че за фигня?
выброси
surrealistic pillow
Отправлено: 19 Января, 2015 - 11:55:17
Новичок
Покинул форум
Сообщений всего: 43
Дата рег-ции: Март 2014
Помог: 0 раз(а)
LIMEscandir возвращает массив имен файлов и вложенных директорий, а не путь к файлу\директории, который нужен как аргумент для is_file, file_get_contents и остальных
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.