Поиск на сервере PHP
Давайте напишем пару функций на PHP, с помощью которых можно найти все файлы, которые содержат необходимый текст. Как ни странно, но готовых таких я не нашел (может, правда, плохо искал) и поэтому пришлось писать свою.
Для начала напишем функцию, которая ищет на странице вхождения подстроки
function searchFiles($filepath, $search, $html = true) { $str = file_get_contents($filepath); if ($html){ $str = strip_tags($str); } $count = substr_count($str, $search); return $count ? true : false; }На вход функция получает путь к файлу, строку для поиска и необязательный параметр html. Он установлен в значение true – это значит, что из получаемого файла убираются все html теги. Если же вам нужен поиск и по ним, то просто вызовите функцию с параметром false. Так, а где её вызвать?
Для полного перебора всех файлов и папок в директории мы напишем полу рекурсивную функцию
function listFolderFiles($dir){ foreach (new DirectoryIterator($dir) as $fileInfo) { if (!$fileInfo->isDot()) { if (!$fileInfo->isDir()){ $ext = $fileInfo->getExtension(); if (($ext=="php") || ($ext=="html") || ($ext=="js") || ($ext==".htaccess")) { $path = $fileInfo->getPathname(); if (searchFiles($path, "body")) { echo $path."Несмотря на множество условий в теле, функция довольно простая. Перебираем все файлы и папки. Если доходим до папки, то снова вызываем саму себя. Если файл, то смотрим его расширение и если оно совпадает с нужными (в данном случае php, html, js, htaccess), то ищем уже подстроку в файле и выводим полный путь. Вызвать можно например так:
"; } } } if ($fileInfo->isDir()) { listFolderFiles($fileInfo->getPathname()); } } } }
listFolderFiles($_SERVER['DOCUMENT_ROOT']);В итоге мы получим список файлов на сервере, которые содержат слово «body» в тексте, но причем это слово не является тегом.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.