Поиск по файлам на PHP
Я уже писал статью о поиске по базе данных, и решил, что для полноты картины, стоит написать статью о реализации поиска по файлам на PHP. Например, если на Вашем сайте есть несколько html-страниц, и Вы хотите сделать поиск по ним. В этой статье мы разберём, как это делается.
Вот функция, которая принимает директорию, а выводит названия файлов, в которых найдены совпадения, а также количество совпадений:
<?php
function searchFiles($dir, $search) {
$files = glob($dir."/*.html"); // Получаем все html-файлы из директории
$results = array(); // Создаём массив для результатов поиска
for ($i = 0; $i < count($files); $i++) {
/* Перебираем все полученные файлы */
$str = strip_tags(file_get_contents($files[$i])); // Помещаем содержимое файлов в переменную, предварительно убрав все html-теги
$count = substr_count($str, $search); // Ищем количество вхождений искомой строки в файл
if ($count) $results[$files[$i]] = $count; // Если хотя бы 1 вхождение найдено, то добавляем файл с количеством вхождений в массив результатов
}
return $results; // Возвращаем результат
}
$results = searchFiles(".", "ABC"); // Ищем файлы в текущей директории, в которых входит строка "ABC"
print_r($results); // Выводим массив (если не знаете, как по-другому вывести массив, то Вам сюда)
?>
Вот такой простой скрипт поиска по файлам на PHP. Безусловно, он тривиален и, почти наверняка, Вам придётся его подстраивать под Вашу задачу, но как основу его можно использовать. И обратите внимание, что тут есть задатки релевантного поиска, поскольку ищутся не просто файлы, в которых есть искомая строка, но ещё и сохраняется количество вхождений. В результате, отсортировав массив по количество вхождений можно вывести пользователю результат поиска с сортировкой по релевантности.
-
- Михаил Русаков
Комментарии (2):
а можете записать видеоурок по этой же теме???
Ответить
Добрый вечер Михаил.Вопрос конечно не по теме,как можно сделать такую фишку как на сайте почты РФ -отслеживание почтовых отправлений.Может напишите статью по этому поводу?
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.