Заметки / Скрипт поиска по статичному сайту
 |  
| 
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.
  
 
  
 | 
 
 
 |