На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Поиск на сервере 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."
"; } } } if ($fileInfo->isDir()) { listFolderFiles($fileInfo->getPathname()); } } } }
Несмотря на множество условий в теле, функция довольно простая. Перебираем все файлы и папки. Если доходим до папки, то снова вызываем саму себя. Если файл, то смотрим его расширение и если оно совпадает с нужными (в данном случае php, html, js, htaccess), то ищем уже подстроку в файле и выводим полный путь. Вызвать можно например так:

listFolderFiles($_SERVER['DOCUMENT_ROOT']);
В итоге мы получим список файлов на сервере, которые содержат слово «body» в тексте, но причем это слово не является тегом.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, php, поиск





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как включить функцию PHP mail() в Ubuntu
Урок 32. Обработка исключений C#


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.