• Регистриция
Этап применения умений и навыков.
Плохой специалист винит не себя, а инструменты, которыми он пользуется. Поэтому убедитесь в том, что ваше прог...
Этап финальной доводки.
Именно внимание к деталям отличает хорошую работу от великолепной. Вот несколько советов как «добавить изюм...
Фиксированный размер шрифта на Ваших веб-страничках
Вы когда нибудь задумывались о том, как выглядят ваши веб-странички на других компьютерах? Наверняка задумыв...
Этап финальной доводки.
Именно внимание к деталям отличает хорошую работу от великолепной. Вот несколько советов как «добавить изюм...
Секреты индексации сайта. Сайт может и должен работать. Пример №2
Звонит скептически настроенный знакомый и рассказывает "ужасную" историю. Сфера деятельности - бытовая элект...
При создании дизайна для Сети вам нужно принять к сведению, что контент будет меняться. О том, чтобы тратить в...
Плохой специалист винит не себя, а инструменты, которыми он пользуется. Поэтому убедитесь в том, что ваше прог...
Поиск по сайту

В данной статье я хотел бы поделиться с вами опытом в программировании на 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. Для этого нужно немного изучить синтаксис регулярных выражений, но этим вы сможете заняться как-нибудь на досуге, а в данном случае будет что-то вроде этого: "\\0", т.е. здесь я использовал теги и для выделения найденных слов, вы можете использовать любые другие теги. В результате наша функция пока будет выглядеть так:

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

Можно так же написать еще одну функцию, для чтения файла (можно использовать в качестве пути URL к файлу) в строку:
// $url=~"http://sitename.ru filename /";
// или
// $url=~"ftp://user: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript /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;
}

Функцию поиска мы написали, теперь осталось написать код для поиска, он будет выглядеть примерно так:
$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,"\\0",$text);
}
else
{
return eregi_replace($search_text,"\\0",$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, "".$search_text."");
$p=$p-$obrezanie;
if ($p<0) $p=0;
$text=substr($text,$p,$obrezanie*2+strlen("".$search_text.""));
return $text;
}

// Выводим форму поиска
echo "

Что искать:

Как искать:

С учетом регистра
Без учета регистра

 

";

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 "

".trim($file[$i])."

";
echo Cut_string($return_text,$Search_text);
echo "
Открыть эту страницу";
echo "


";
}
}
}
?>

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

По всем вопросам пишите мне на email.

 

Популярное

  • PHP. Пишем счетчик просмотров для каждой страницы сайта на php
    На некоторых сайтах часто можно увидеть следующую надпись внизу страницы или под статьями: "Всего просмотров xxx. Сегодня xx". На первый взгляд ничего примечательного...
    Пишем 'гостевую книгу' с нуля на php
    Почти на каждом более-менее популярном сайте есть форум или гостевая книга, эти элементы нужны для постоянного общения автора сайта с его пользователями. Но многие...
    Окна сообщений
    Хотя всплывающие окна это и очень эффективный метод получения новых подписчиков, есть один еще более успешный. Сочетая его с хорошим стимулом, вы в буквальном смыс...
    Собственная статистика поисковых слов (Яндекс, Рамблер, Google,...) на PHP
    В этой статья я бы хотел поделиться с вами своей новой разработкой – анализатором поисковых запросов с популярных поисковых систем, посмотреть, что это такое, и ка...
    Гостевая книга на PHP.
    В этой статье рассказывается о том, как создать гостевую книгу, описывается её структура и реализация. За пределами статьи остаются дизайн, вёрстка, оформление и т....
  • Организация CSS-файлов: Совет 1 - Флаги
    CSS Organization Tip 1: FlagsВам приходилось писать и работать с большими CSS-файлами? Мучались с бесконечным скроллингом вверх-вниз в поисках нужной части кода? CSS-файлы, с котор...
    Частые ошибки в веб-дизайне.
    Разметка текста – одна из самых важных характеристик дизайна. В большей части проектов текст доминирует, так что хорошо подобранные шрифты могут стать ключом к ра...
    Компот и мухи веб-разработки
    Русский интернет (уже наконец) вовсю осваивает “дизайн через CSS”, но многие все равно не понимают, почему именно надо дизайнить так, а не по-старому, через таблицы. Р...
    Создаем веб-дизайн на тему комиксов, Photoshop и HTML+CSS
    Давайте начнем! Для быстроты изложения я опущу объяснение основ (вроде того, как создать слой-маску или отредактировать обработчики или векторную фигуру). Вам нужн...
    HTML 4 не является языком оформления веб-страниц.
    Он является языком логической разметки страниц. Раньше, создавая HTML-документ, вы думали о том, что этот заголовок будет сделан жирной верданой золотистого цвета и о...
  • Немного о PHP.
    Интернет уже давно прочно вошел в нашу жизнь. Это смелое утверждение можно доказывать или опровергать много раз, но так или иначе все меняется, а с этим спорить никт...
    Основы написания PHP программ
    Как и в любом языке программирования в PHP есть свои правила, константы, зарезервированные слова и операторы, с помощью которых выполняются различные манипуляции с ...
    История РНР
    Начинать нужно всегда с самого простого, и сейчас я попробую познакомить Вас с программированием на скриптовом языке РНР. РНР (читается как пи-эйч-пи) появился на св...
    Особенности РНР
    Как и у всякого языка программирования, у РНР есть свой синтаксис. Он очень похож на синтаксис языка С или Perl. Программисты, пишущие на этих языках, смогут освоить РН...
    Введение в PHP
    PHP - это скриптовый язык программирования, который исполняет весь свой код на стороне сервера, а клиенту выдается только результат работы скрипта. Изначально PHP рас...

Теги

Календарь

< Ноябрь 2011 >
П В С Ч П С В
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 30        

Наши фото

Укажите свое мастерство









 

Обрати внимание

Факторы, влияющие на результаты поиска (поисковой выдачи)
На данный момент поисковыми системами при ранжировании сайтов используются два фактора:Соответствие текста страницы запросу, введенному пользователем (поискова...
Хороший дизайн
Как-то раз собрались авторитетные дизайнеры со всего мира и стали думать, что такое хороший дизайн. Думали - думали, и пришли к выводу: Хороший дизайн - это дизайн, ко...

На заметку

Твой сайт
Изготовление сайта - штука тяжёлая и занимает кучу времени. Так что длительность прогулок под Луной с любимой девушкой, а для кого и с любимым бойфрендом, придется с...
JavaScript: очистка формы
Для очистки формы существует специальная кнопка Reset, при нажатии на которую данные формы возвращаются в исходное значение. Если ввести свои данные в форму, а затем ...