Заметки / Скрипт поиска по статичному сайту
|
PHP
|
|
Cтарый сайт на HTML, перенесённый на хостинг с поддержкой PHP, может быть легко усовершенствован функцией поиска.
Для этого достаточно вставить на его главную страницу эту форму:
<form action="search.php" method="get">
<input name="search" size="20" maxlength="50" type="text" />
<input type="submit" value="Искать" />
</form>
И закачать в корневую директорию скрипт поиска search.php следующего содержания:
<!-- Здесь можно вставить HTML -->
<?php
/* Стадия - 1: Читаем директорию со страничками */
if (!empty ($_GET ["search"]))
{
$mydir="/dir";//dir замените на директорию поиска
$search=strtolower (urldecode ($_GET ["search"]));
if ($handle=opendir ($_SERVER["DOCUMENT_ROOT"].$mydir))
{
$c=0;
while (false!==($file=readdir ($handle)))
{
$c++;
$html_file [$c]=$file;
}
}
/* Стадия - 2: Читаем странички, вытягиваем из них текст, alt, title, запоминаем количество соответствий искомомой фразе */
$html_relevancy=array ();
$html_match=false;
for ($i=3; $i<=$c; $i++)
{
$html_body=file_get_contents ($_SERVER ["DOCUMENT_ROOT"].$mydir.$html_file [$i]);
preg_match_all ('/title="(.*)"/Usi', $html_body, $out);
$html_titles [$i]=join ($out [1]);
preg_match_all ('/alt="(.*)"/Usi', $html_body, $out);
$html_alts [$i]=join ($out [1]);
$html_body=strip_tags ($html_body);
$temp=substr_count (strtolower ($html_titles [$i].$html_alts [$i].$html_body), $search);
if ($temp>0)
{
$html_relevancy [$i]=$temp;
$html_match=true;
}
}
/* Стадия - 3: Если найдено хотя бы одно совпадение - сортируем массив по количеству этих самых совпадений */
if ($html_match==true)
{
arsort ($html_relevancy, SORT_NUMERIC);
reset ($html_relevancy);
$n=0;
foreach ($html_relevancy as $key=>$val)
{
if ($val>0)
{
$n++;
$html_point [$n]=$key;
}
}
}
/* Стадия - 4: Финал: выводим результаты поиска */
if ($n>0)
{
print 'Всего найдено по Вашему запросу страниц: '.$n.'<br /><br />';
for ($i=1; $i<=$n; $i++)
{
print '<a href="'.$html_file [$html_point [$i]].'">'.$html_file [$html_point [$i]].'</a>';
print '<br />';
}
}
else
print 'Ничего не найдено';
}
else
print 'Нет поискового запроса';
?>
<!-- Здесь можно вставить HTML -->
После отправки формы появится страница с результатами поиска, выстроенными с учётом релевантности заданному запросу. Внешний вид страницы можно изменить дополнив элементами HTML-кода начало и конец файла search.php.
|
|