Артём Мáлков

Простой поиск файлов по названию и расширению на PHP

16 сен0 комм

Привет, друзья! Довелось мне поработать на одном коммерческом сайте. И, как выяснилось, с течением недолгого времени на сайте пропала часть изображений. Удалять их, конечно же, никто не удалял, и предположения были, что папку случайно перенесли в другое место.

Да, бывает и такое. Но суть сейчас не в этом. А в том, как я искал эту папку. Поскольку мне были известны имена некоторых файлов (а это уже хорошая зацепка при поиске), то я решил написать небольшой скрипт для поиска этих файлов по всему сайту. Вдобавок ко всему специально для аудитории сайта я доработал поиск и сделал несколько разных его вариантов.

Два варианта поиска файлов по названию на PHP

В этом блоке я представляю вашему вниманию два разных варианта поиска файлов на вашем хостинге по названию.

1. Точный поиск по названию:

<?php

	header("Content-Type: text/html; charset=utf-8");

	$path = $_SERVER["DOCUMENT_ROOT"];
	$directory = new \RecursiveDirectoryIterator($path);
	$iterator = new \RecursiveIteratorIterator($directory);

	foreach ($iterator as $info) {

		$name_file = substr($info->getfileName(), 0, strrpos($info->getfileName(), "."));

		$name_search = array("robots", "www_pandoge_com"); // Список файлов

		foreach($name_search as $key_name) {

			if($name_file == $key_name) {
		
				echo $info->getPathname()."<br>";

			}

		}

	}

?>

2. Неточный поиск (по наличию слова в названии):

<?php

	header("Content-Type: text/html; charset=utf-8");

	$path = $_SERVER["DOCUMENT_ROOT"];
	$directory = new \RecursiveDirectoryIterator($path);
	$iterator = new \RecursiveIteratorIterator($directory);

	foreach ($iterator as $info) {

		$name_file = substr($info->getfileName(), 0, strrpos($info->getfileName(), "."));

		$name_search = array("robots", "www_pandoge_com"); // Список файлов

		foreach($name_search as $key_name) {

			if(preg_match("/".$key_name."/", $name_file)) {
		
				echo $info->getPathname()."<br>";

			}

		}

	}

?>

Во всех вариантах – переменная $name_search содержит в себе слово (слова) для вашего поиска по файлам.

Код вы вставляете в файл PHP с любым именем, после чего грузите его на ваш хостинг.

Обращаетесь к нему на вашем сайте, и на выходе (при положительном результате) вы получите список найденных файлов с полным их местоположением.

Поиск файлов по расширению на PHP

В поисках файлов по расширению, как вы поняли, не учитывается имя, а учитывается его формат. Например, у изображений это может быть PNG, JPG или GIF, а у аудиофайлов – MP3, WAVE и другие.

Код для поиска:

<?php

	header("Content-Type: text/html; charset=utf-8");

	$path = $_SERVER["DOCUMENT_ROOT"];
	$directory = new \RecursiveDirectoryIterator($path);
	$iterator = new \RecursiveIteratorIterator($directory);

	foreach ($iterator as $info) {

		$file_formal = substr($info->getfileName(), strrpos($info->getfileName(), ".") + 1);

		$name_search = array("mp3", "jpg"); // Список форматов

		foreach($name_search as $key_name) {

			if($file_formal == $key_name) {
		
				echo $info->getPathname()."<br>";

			}

		}

	}

?>

Его вы также вставляете в PHP-файл, грузите на хостинг и обращаетесь для получения результатов поиска.

Обратите внимание, что регистр во всех вариантах имеет значение. И, например, если файл на хостинге имеет расширение MP3, а в переменной для поиска вы указали «mp3» – файлы найдены не будут. Но этот момент можно подправить с помощью функции «mb_strtolower».

Рекомендуем к просмотру
Выводим изображения товара в результатах поиска в 1C-Bitrix
Хаки
Как получить имена всех выбранных файлов в input[multiple] на jQuery?
Модули и скрипты
Поиск по определенным категориям в DLE
Хаки
0
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Подняться наверх
«Pandoge» - помощник вебмастера