ГЛАВНАЯ | HTML | CSS | PHP | JS | ЕЩЁ |

Поиск по сайту php

Поиск по сайту, поиск по файлам и вообще будем искать на сайте. Давно хотел сделать такую тему, как поиски внутри сайта, внутри файлов. В общем разобраться в теме поиска.

В самом начале давайте разберемся, где будем искать. Мы будем искать в файлах, но в принципе второй вариант, может подойти и как поиск по базе данных.

Но давайте все по порядку.

И сделаем маленькую навигацию по странице…


2.

Поиск по файлам

И второй поиск – это поиск по файлам во всем сайте!

Я не буду вам разжевывать каждую строчку, а лишь расскажу алгоритм.

Получаем все ссылки, а у нас все ссылки нашего сайта есть в карте сайта XML.

Очищаем от всех тегов(preg_match_all), которые присутствуют в карте XML.

array_shift - удаляем первую ячейку - ссылка на главную, она нам не нужна, потмоу, что на ней дублруется часть заголовков, которые уже есть в карте сайта.

Далее удаляем домен во всех ссылках($ALL_pages = preg_replace($patterns, $replacements, $url[1]);).Для чего это делается!?

Мы будем использовать функцию file_get_contents для получения данных со страницы, а у неё есть некоторые нюансы.

1.

Если вы используете относительный путь до страницы https://dwweb.ru/название_страницы.html, то функция вернет полностью загруженную страницу с исполненными скриптами – а это-то, как раз нам и не нужно! Страница – тупо зависнет и попытается получить данные с 300 страниц(на момент написания статьи)… и будет висеть бесконечно!

2.

Если использовать абсолютный путь до файла

$_SERVER[“DOCUMENT_ROOT”] + путь до файла. То мы получим исходный код страницы, а у нас , кроме текста там ничего и нет, что собственно нам и нужно! Это будет загружаться намного быстрее!

Все данные привели к нижнему регистру(mb_strtolower) и поиск и линию. Далее делаем цикл, перебираем наш массив($ALL_pages) на совпадения(strpos). Считаем строки, если цикл прошел один раз прибавляем единицу($line_count), потом её выведем как количество совпадений.

Ну и далее делаем вывод и результатов поиска и сколько строк…

Смотрим собранный код, скопировать в самом низу...

Тестирем, что у нас получилось

<?php

$ALL_pages = file_get_contents('https://dwweb.ru/sitemap.xml');  

preg_match_all("#<loc>(.+?)</loc>#i", $ALL_pages, $url);

//УДАЛЕМ ПЕРВУЮ ЯЧЕКУ СО ЗНАЧЕНИЕМ dwweb.ru

$fruit = array_shift($url[1]);

$patterns1 = "http:\/\/dwweb.ru\/";// что меняем 

$patterns = "/$patterns1/";// что меняем 

$replacements = '/';//На что менняем 

$ALL_pages = preg_replace($patterns, $replacements, $url[1]); //пропускаем через функцияю замены 

 //print_r($ALL_pages);

$home = $_SERVER['DOCUMENT_ROOT'];

If(isset($_POST['poisk'])){ $poisk = $_POST['poisk'];}

$poisk = mb_strtolower( $poisk, 'UTF-8'); 

If(isset($_POST['button']))

{

 for ($i = 0; $i  < count($ALL_pages); $i++) 

 { 

 $new =  file_get_contents($home.$ALL_pages[$i]);  

 $new = mb_strtolower( $new, 'UTF-8');  

   if (strpos($new, $poisk) !== false) 

 {   $line_count += 1;

   

   $parts = explode('::', $line);

   echo  '<a href ="'.$ALL_pages[$i].'" target="_blank">'.$ALL_pages[$i].'</a><br>' ;

   }  }

if(!empty($line_count)){ $vivod_info = 'Всего найдено совпадений по запросу <strong>"'.$poisk.'"</strong> - ' . $line_count; } else { $vivod_info = 'Ничего не найдено...<br>Попробуйте изменить строку поиска.<br>Либо изменить посиковое слово';} 

}

 

?>

<? echo $vivod_info ?>

<form method="POST" action="">

  <input type="text" name="poisk" >

  <input type="submit" name="button" value="ИСКАТЬ"><br>

</form></div>


3.

Поиск по файлам №2

Поиск по файлам №2 аналогичен "Поиск по файлам №1", с той только разницей, что выводятся названия страницы, а не ссылки.

Как это работает!?

На сайте есть файл, куда складываются некоторые данные для формирования главной http://marrex.ru/, там есть ссылки и названия страниц и нам остается только в цикле выводить части строки. И аналогичным путем ползучем все данные со всех страниц.
Не буду вдаваться во все подробности такого поиска и + совместил поиск по заголовкам и во всех файлах в один и вот, что у нас получилось.
Не забудь !
Посмотреть пример и скачать можно по ниже идущей ссылке

Скрипт № 14.2
Название скрипта и номер :Поиск по файлам
Пример - Поиск по файлам
Скачать - архив
Все скрипты на одной страницеС вашими куками, что-то не то..., попробуете перезагрузить страницу..
Теги:
поиск по сайту phpскрипт поиска по сайту phpкак сделать поиск по сайту phpпоиск для сайта php mysqlпростой поиск по сайту phpпоиск по сайту без phpпостраничный поиск по сайту на php mysqlреализация поиска на сайте через php

НАШИ ПРОЕКТЫ : Проекты находятся в разной степени готовности (просто их столько, что времени не хватает…) https://dwweb.ru/ http://calc.dwweb.ru/ http://kod.dwweb.ru/ http://marrex.ru/ http://pro.dwweb.ru/ https://f0rlink.com/ https://comments.dwweb.ru youtube Все статьи авторские, при копироавании активная ссылка обязательна DwWeb.ru! © 2015 - 2019