WWW.MOBILA.FARX.RU
 Веб-Мастеру
PHP. Поиск по сайту
 Погода

» Создание сайта
» Бесплатный хостинг
» Бесплатная почта
» Дизайн сайта
» Раскрутка сайта 1
» Раскрутка сайта 2
» Программирование
» База белых каталогов
» Статьи

 E-Money
» Электронные деньги
» WebMoney
» E-gold
» Liberty Reserve
» RuPay
» Обменные пункты
 Заработок

» Начинающим
» Компания DepositFiles
» Основные вопросы
» Спонсоры(САР)
» Серфинг и автосерфинг
» MLM проекты
» Инвестиции
» Веб-мастеру
» Букмекерские конторы
» Моментальные бонусы
» Введение в коммерцию
» Всё о коммерции
» Статьи о заработке
» Форумы о заработке

 Идеи бизнеса
» Часть 1
» Часть 2
» Часть 3
» Часть 4
» Часть 5
» Часть 6
» Часть 7
» Часть 8
» Часть 9
» Часть 10
» Часть 11
» Часть 12
 Реклама
Яндекс.Погода
 Реклама

 В данной статье я хотел бы поделиться с вами опытом в программировании на php, и показать, как можно довольно просто организовать поиск по-вашему сайту.

И так начнем. Для начала нам понадобится создать список файлов, в которых мы будем искать нужное слово или сочетание нескольких слов. Для этого создадим файл files.dat с именами файлов, в которых будет осуществляться поиск.

Как пример:
file1.txt
dir1/file2.txt
dir2/file3.txt
...
dirn/filen.txt
 

Для поиска можно использовать следующие функции:
ereg и eregi а также функции поиска вхождений регулярных выражений и их преобразования ereg_replace и eregi_replace. Ereg отличается от eregi только тем, что первая ищет без учета регистра символов, а вторая их учитывает. Но так как мы будем осуществлять поиск в текстовых или html файлах предпочтительней для нас использовать «подсветку» искомых слов в выводимом результате, так как это делают многие поисковые системы, и для этого мы воспользуемся двумя последними функциями, т.е. ereg_replace и eregi_replace.

        Что бы найти вхождение слова в строку, а именно так мы в дальнейшем представим наши файлы функции поиска, нам нужно составить правильное регулярное выражение, т.е. как бы составит запрос «понятный» функциям ereg_replace и eregi_replace.  Для этого нужно немного изучить синтаксис регулярных выражений, но этим вы сможете заняться как-нибудь на досуге, а в данном случае будет что-то вроде этого: "<b>\\0</b>", т.е. здесь я использовал теги <b> и </b> для выделения найденных слов, вы можете использовать любые другие теги. В результате наша функция пока будет выглядеть так:

// $text - текст в котором ищем
// $search_text - искомые слова
// $use_register - использование регистра

function search($text, $search_text, $use_register=false)
{       
   if ($use_register) // если учитывать регистр символов
   {
   return ereg_replace($search_text,"<b>\\0</b>",$text); // ищем, заменяем, возвращаем
   }
   else // если не учитывать регистр символов
   {
   return eregi_replace($search_text,"<b>\\0</b>",$text); // ищем, заменяем, возвращаем
  }
return $result; // так, на всякий случай
}

        Можно так же написать еще одну функцию, для чтения файла (можно использовать в качестве пути URL к файлу) в строку:
// $url=~"http://sitename.ru filename /";
// или
// $url=~"ftp://user:pass@sitename.ru/filename";
//или
//$url=~" filename”;
function Remote_file_read($url)
{
$text="";
$file = @fopen ($url, "r");
if (!$file) {
     return "-1";
     echo "EROR"; //можно удалить
     exit;
}
while (!feof ($file)) {
     $line = fgets ($file, 1024);
     $text.=$line;
     }
fclose($file);
return $text;

        Функцию поиска мы написали, теперь осталось написать код для поиска, он будет выглядеть примерно так:
<?php
$files_file="files.dat";
$obrezanie=100; //обрезание строки по длинне
// $text - текст в котором ищем
// $search_text - искомые слова
// $use_register - использование регистра

function search($text,$search_text,$use_register=false)
{
   if ($use_register)
   {
   return ereg_replace($search_text,"<b>\\0</b>",$text);
   }
   else
   {
   return eregi_replace($search_text,"<b>\\0</b>",$text);
   }
return "";
}

function Remote_file_read($url)
{
$text="";
$file=@fopen ($url, "r");
if (!$file) {
     return "READ EROR";
     exit;
}
while (!feof ($file))
     {
     $line=fgets ($file, 1024);
     $text.=$line;
     }
fclose($file);
return $text;
}

function Cut_string($text,$search_text) // Функция обрезающая текст
{
   global $obrezanie;
   $p=strpos($text, "<b>".$search_text."</b>");
   $p=$p-$obrezanie;
   if ($p<0) $p=0;
   $text=substr($text,$p,$obrezanie*2+strlen("<b>".$search_text."</b>"));
   return $text;
}

 // Выводим форму поиска
echo "<form name=\"f1\" method=\"get\" action=\"search.php\"><table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" width=\"70%\"><tr><td width=\"35%\"><p align=\"right\">Что искать:</p></td><td width=\"368\"><p><input type=\"text\" name=\"Search_text\" size=\"34\" value=''></p></td></tr><tr><td width=\"368\"><p align=\"right\">Как искать:</p></td><td width=\"368\"><p><input type=\"radio\" name=\"type\" value=\"0\">С учетом регистра<br><input type=\"radio\" name=\"type\" value=\"1\">Без учета регистра</p></td></tr><tr><td width=\"527\" colspan=\"2\"><p align=\"center\"><input type=\"submit\" value=\"Найти\">&nbsp;</p></td></tr></table></form>";

if (isset($Search_text)) // Если слово для поиска заданно то идем дальше
{
$found=false;
if (!isset($type)) $type=1; // Проверяем тип поиска
if ($type==0) $use_register=true;
else
$use_register=false;
$file=file($files_file);
$count=count($file);
for ($i=0 ; $i<$count ; $i++) // Проходим по всем файлам указанным в files.dat
      {
       $def_text=htmlspecialchars(Remote_file_read(trim($file[$i])));
       $return_text=search($def_text,$Search_text,$use_register);
       if ($def_text!==$return_text)
       {
       echo "<h3>".trim($file[$i])."</h3>";
       echo Cut_string($return_text,$Search_text);
       echo "<br><a href=\"".trim($file[$i])."\">Открыть эту страницу</a>";
       echo "<br><hr><br>";
       }
       }
}
?>

Полученный код вы без проблем можете использовать на своем сайте, несмотря на его просту для большинства небольших сайтов его должно хватить. Основным недостатком кода является то, что при поиске в html файлах результат может выводиться не в особо-читаемой форме. Поэтому данный скрипт предназначен в основном для поиска в текстовых файлах.

Дизайнер сайта: Лазаренко Виталий Сергеевич E-Mail:lazarenko-vitalik@xaker.ru ICQ: 397-116-997
Использование материалов сайта возможно только с разрешения администрации.

Все права защищены. WEBMSX.NAROD.RU - Работа в интернете © 2008
CY and PR Rambler's Top100 Рейтинг@Mail.ru