его работу можно посмотреть на сайте http://www[dot]mpk-ekb[dot]ru набрав в строке поиска КОМП (например)
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $pa[1]="page1.php";
- $ca[1]="Страница 1";
- $pa[2]="page2.php";
- $ca[2]="Страница 2";
- $pa[3]="page3.php";
- $ca[3]="Страница 3";
- $count_pages_for_search=3; // кол-во страниц для поиска
- $word=$_POST['word']; // переданное из формы слово для поиска
- $count_pages=0; // счет страниц где слово найдено
- // цикл поиска
- for($l=1; $l<=$count_pages_for_search; $l++){
- $text="<span>".$text."</span>"; // это чтобы в начале были всегда теги
- // еще раз разбиваем чтобы получился двумерный массив
- // здесь пока все в куче и слова и теги
- }
- $count=0; \\ счет для запоминания что содержится в переменной слова или тег
- $countT=0; \\ счет для массива тегов
- $countW=0; \\ счет для массива слов
- // т.к. в начале всегда теги первое значение массива - тег
- if ($j==0){$tag[$countT]=$m2[$i][$j];$countT++; $what[$count]="t";}
- // второе значение по любому - слова
- if ($j==1){$words[$countW]=$m2[$i][$j];$countW++; $what[$count]="w";}
- // а это если вдруг в тексте есть знак больше добавляем к предыдущим словам
- if ($j>1){$words[$countW-1]=$words[$countW-1]."##".$m2[$i][$j];$count--;}
- $count++;
- }
- }
- // массив what хранит по сути последовательность из тегов и слов чтобы сложить
- // содержимое в исходном виде
- // поиск среди массива слов(текста) нужного слова
- // реализовано не очень красиво согласен
- // выделяем слово поиска красным фоном и шрифт желтым цветом и жирным
- $words[$i]=preg_replace('/'.$word.'/i','<span style="background-color:#ff1c1c;color:#ffefcf;font-weight:bold;">'.$word.'</span>',$words[$i]);
- }
- // собераем теги и текст к исходной структуре благодаря массиву what
- $countT=0;
- $countW=0;
- $html="";
- if ($what[$i]=="t") {$html=$html."<".$tag[$countT].">";$countT++;}
- if ($what[$i]=="w") {$html=$html.$words[$countW]; $countW++;}
- }
- // убираем косяки, они получаются в самом начале содержимого
- // восстанавливаем знаки больше если вдруг были в тексте
- // считаем количество найденных слов на одной странице (очень тупой способ)
- $count=0;
- $count++; // счетчик количества найденных слов
- }
- // здесь формируем элемент div с содержимым страницы если на ней найдено слово
- // поиска, первый элемент видим, остальные нет
- $h="";
- if ($count>0){$count_pages++;
- $h="<div id='search".$count_pages."' style='width:100%;";
- if ($count_pages>1){$h.="display:none;";}
- $h.="'>";
- $h.="<b><span style='color:#e33030'>".$caption."</span></b> <b><br><span style='color:#a4a4a4'>Найдено совпадений на странице:</span></b> ".$count."<br>";
- $h.=$html;
- $h.="</div>";
- $pagetext[$count_pages]=$h;
- $captions[$count_pages]=$ca[$l];
- }
- } // завершение цикла поиска в очередном файле
- // формируем список найденных страниц
- // на список повешена функция JS скрывающая текущую страницу и показывающая выбранную из списка
- echo "<b><span style='color:#e33030'>Найдено страниц:</span></b> ".$count_pages;
- echo "<select id='searchedPages' onchange='thisSearchPage()' style='margin-left:50px; width:150px;'>";
- echo "<option value='".$m."'>".$captions[$m]."</option>";
- }
- echo "</select><br><br>";
- // сами страницы первая видима остальные нет
- echo $pagetext[$m];
- }