Поиск по контенту сайта php примеры
Поиск по сайту, поиск по файлам и вообще будем искать на сайте . Давно хотел сделать такую тему, как поиски внутри сайта, внутри файлов. В общем сделать рабочий скрипт поиска по сайту.
В самом начале давайте разберемся, где будем искать. Будем искать не только в файлах, но и сделаем поиск по базе данных.
Поиск по сайту php
- Алгоритм поиска по сайту
- Поиск по контенту сайта ->
база данных - Поиск по контенту сайта ->
файлы - DW - search 1.2
- Скачать на странице все скрипты.
Алгоритм поиска по сайту
Прежде чем перейти к алгоритму... данный поиск стоит у нас на сайте, см. сверху. Единственное отличие - получаем название страницы и выводим её. Адоптировано под нашу структуру сайта. Название страницы хранится в переменной $title = "";
как получаем!?
$new = my_strtolower( @file_get_contents(путь до файла)); //получаем файл в строку.
preg_match('/\$title(.+?);/i', $new, $ttle); //получаем данные внутри переменной
$titles = str_replace(array('=','"',"'"), '', $ttle[1]) ;//удаляем равно и кавычки.
if (substr_count( my_strtolower($titles), my_strtolower ( $poisk ))) //проверяем на совпадение в заголовке искомого слова $poisk и если совпадение найдено выделяем тегом "mark".
{ $titles = str_replace( my_strtolower ( $poisk ) , '<mark>'.my_strtolower ( $poisk ).'</mark>', my_strtolower($titles)) ; }
Алгоритм поиска по сайту - нужно взять контент страницы,(либо ту строку базы данных, которая отвечает за контент) и проверить на совпадение с искомым словом, для этого будем использовать функцию substr_count и выдать на какой странице данное совпадение находится.
И далее в цикле проверить все файлы или строки в базе на совпадение!
Все просто!
Поиск по контенту сайта -> база данных
Для данного примера есть архив со скриптом.
Я уже давно не занимался базами данных, поэтому, никак проверить не смогу работоспособность данного скрипта!
НО! Схематично могу набросать, как бы я делал поиск по базе данных сайта.Нам понадобится:
Берем скрипт вывода из базы данных
Все что внутри цикла while удаляем и туда вставляем:
{
$line_count ++;
$rezult .= '<a href ="'.$row['url'].'" target="_blank">'.$row['title'].'</a>' ;
}
Где :
1). $row['CONTENT'] - столбец, отвечающий за контент2). $row['url'] - столбец, отвечающий за ссылку
3). $row['title'] - столбец, отвечающий за заголовок
Ниже скрипта располагаем форму для отправки запроса на поиск оп базе данных:
<input type="text" name="poisk">
<input type="submit" name="button" value="ОТПРАВИТЬ">
</form>
В самом верху страницы располагаем функцию собственную функцию strtolowermy_strtolower
Следующей строкой получаем данные из формы :
Пропускам данные через my_strtolower:
Скачать скрипт поиска по базе данных
Скрипт поиска по базе данных.Поиск по контенту сайта -> файлы DW - search 1.2
Пример на отдельной странице.
Скачать со страницы скриптов
Описание обновлено!
Если мы говорим о поиске по контенту на сайте, который сделан на файлах, то первое с чем мы сталкиваемся, против базы данных, как получить все ссылки на все файлы!?
Предположим, что все ваши ссылки есть в карте sitemap.XML - нам нужно извлечь все ссылки из данного файла, а потом в цикле проверить наличие искомого слова...
Да! И функцию my_strtolower можете заменить на обычную strtolower(если она у вас работает)
+ Получим в переменную $poisk от правленный поисковый запрос.
+ все буквы приведем к нижнему регистру my_strtolower
$home = $_SERVER['DOCUMENT_ROOT'];
if($_POST['poisk']){ $poisk = strip_tags ( $_POST['poisk'] );}
$poisk = my_strtolower( $poisk );
if($_POST['button'])
{
if( $poisk )
{
for ($i = 0; $i < count($ALL_PAGES); $i++)
{
if( file_exists( str_replace( $domen , $home , $ALL_PAGES[$i]) ) )
{
Теперь весь контент страницы полученный в цикле через file_get_contents переведем в нижний регистр - my_strtolower и внутри получим путь на сревре заменив домен на $home
Далее собственно поиск искомого слова в контенте+ если что-то найдено, то создаем счетчик +1($line_count)
+ заносим в переменную $rezult адрес страницы, где это было найдено.
$new = my_strtolower( file_get_contents( str_replace( $domen , $home , $ALL_PAGES[$i]) ) );
if (substr_count($new, $poisk))
{
$line_count += 1;
$rezult .= '<a href ="'.$ALL_PAGES[$i].'" target="_blank">'.$ALL_PAGES[$i].'</a><br>' ;
Далее особо ничего интересного... форма + вывод полученных данных...
Свои комменты в ожидании переделки!
Когда сделаю не знаю!
Времени нет...
Иначе сообщение будет удалено, вас в бан - все просто!
Но если, сил нет как хочется высказать всё, что вы думаете об этом, пожалуйста - комменты от Vk - форма ниже: