Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka na statycznej stronie www
inuma
post 10.06.2019, 11:53:34
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.06.2019

Ostrzeżenie: (0%)
-----


Szukam prostego skryptu, który realizowałby prościutkie wyszukiwanie na podstronach www. (Nie w bazie mysql!) Stronę mam bez bazy, tylko html i css, mogę przerobić na php. Chodzi mi o samo okienko "search", wyniki na osobnej podstronie, jeden pod drugim z kawałkiem tekstu z "otoczenia" znalezionej frazy

znalazłem taki prosty kod:

  1. <?php
  2. $gdzie_szukac = 'http://domena.tld';
  3. echo '<a target=_blank href='."$gdzie_szukac".'/>'.$gdzie_szukac.'</a>';
  4. $tekst = file_get_contents( $gdzie_szukac );
  5. $wzorzec = '/szukany_ciag/';
  6. preg_match_all($wzorzec, $tekst, $wyniki);
  7. if (count($wyniki[0]) > 0) {
  8. echo ' - znalazlem';
  9. }
  10. else echo ' - nie znalazlem';
  11. ?>


Chciałbym jednak zmienić
  1. echo ' - znalazlem';


na wyświetlanie szukanego stringa wraz z kilkoma słowami wcześniej i kilkoma później. I jeśli są, wyświetlanie wielu takich odpowiedzi jedna pod drugą nie na oddzielnej stronie, ale na stronie gdzie jest formularz wyszukiwania
Go to the top of the page
+Quote Post
sratatata
post 11.06.2019, 14:16:07
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

Ostrzeżenie: (20%)
X----


ten Twoj przyklad jest be z sensu. Po pierwsze pobierze 'cośtam' z jednego pliku.


Ten post edytował sratatata 11.06.2019, 14:38:15
Go to the top of the page
+Quote Post
inuma
post 11.06.2019, 15:23:44
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.06.2019

Ostrzeżenie: (0%)
-----


Można go przerobić na taki który ściąga z kilku plików. Już na upartego powiedzmy że są to pliki tekstowe. Chodzi mi o funkcje, które wyświetlą szukany string wraz z jego najbliższymi liniami.
Go to the top of the page
+Quote Post
sratatata
post 12.06.2019, 12:16:05
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 2
Dołączył: 25.05.2019

Ostrzeżenie: (20%)
X----


Cytat(inuma @ 11.06.2019, 15:23:44 ) *
Można go przerobić na taki który ściąga z kilku plików. Już na upartego powiedzmy że są to pliki tekstowe. Chodzi mi o funkcje, które wyświetlą szukany string wraz z jego najbliższymi liniami.


Msz i nie marudz ze wójek @sratatata jest zly
Here we go.;..

  1. <?php
  2. if(!function_exists('Sh'))
  3. {
  4. function ShowAllTree($main)
  5. {
  6.  
  7. $deny = array('index.php', 'index2.php'); // pliki ktorych nie chcesz
  8. $sll = array();
  9.  
  10. $dir = scandir($main);
  11.  
  12. foreach($dir as $file)
  13. {
  14. if($file != '.' && $file != '..' && (!in_array($file, $deny)))
  15. {
  16. if(!is_dir($file))
  17. {
  18. $all[] = $file;
  19. }
  20.  
  21. }
  22. }
  23.  
  24. return $all;
  25. }
  26.  
  27. }
  28.  
  29. $tabr = ShowAllTree('./');
  30.  
  31. $szukana = 'kota';
  32. $nr=0;
  33. foreach($tabr as $next)
  34. {
  35.  
  36.  
  37. $slowa = explode(" ",join(" ",file("./".$next)));
  38.  
  39. for($tmp=0;$tmp<count($slowa);$tmp++) {
  40.  
  41. if(strstr($slowa[$tmp],$szukana)){
  42. $nr++;
  43. $tmpData[]="[$nr]<br>";
  44. for($i=$tmp-5;$i<=$tmp+5;$i++){
  45. if(isset($slowa[$i]))
  46. {
  47. if($i==$tmp) {
  48. $tmpData[count($tmpData)-1].="<b>$slowa[$i]</b> ";
  49. }else{
  50. $tmpData[count($tmpData)-1].="$slowa[$i] ";
  51. }
  52. }
  53. }
  54. $tmpData[count($tmpData)-1].="...";
  55. $tmpData[count($tmpData)-1].="<a HREF='$next'>Wiecej...</A>";
  56. }
  57. }
  58.  
  59.  
  60.  
  61.  
  62. }
  63.  
  64.  
  65. foreach($tmpData as $val)
  66. {
  67.  
  68. print $val;
  69.  
  70. }
  71.  
  72.  
  73.  
  74.  
  75. ?>

Go to the top of the page
+Quote Post
inuma
post 12.06.2019, 17:04:06
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.06.2019

Ostrzeżenie: (0%)
-----


Jak to zastosować do strony? Chcę umieścić formularz wyszukiwania na stronie index i jeszcze kilku innych i niech przeszukuje katalog z wyłączeniem niektórych plików (graficznych i innych). Jak uruchamiać te funkcje?
Ten kod jest dla mnie zbyt skomplikowany.


czy umieści ten kod w osobnym pliku np search.php i uruchamiać go post?
Go to the top of the page
+Quote Post
sratatata2
post 12.06.2019, 20:52:15
Post #6





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.06.2019

Ostrzeżenie: (10%)
X----


Cytat(inuma @ 12.06.2019, 17:04:06 ) *
Jak to zastosować do strony? Chcę umieścić formularz wyszukiwania na stronie index i jeszcze kilku innych i niech przeszukuje katalog z wyłączeniem niektórych plików (graficznych i innych). Jak uruchamiać te funkcje?
Ten kod jest dla mnie zbyt skomplikowany.


czy umieści ten kod w osobnym pliku np search.php i uruchamiać go post?


Cytat(inuma @ 12.06.2019, 17:04:06 ) *
Ten kod jest dla mnie zbyt skomplikowany.


Jesli gotowy przyklad jest dla Ciebie skomplikowany to moze sobie daruj.

Przyklad posiada tablice gdzie podajesz nazwy plikow ktore nie chcesz otwierac do przegladania.

  1. <?php
  2.  
  3. function ShowAllTree($main)
  4. {
  5.  
  6. $deny = array('index.php', 'index2.php', 'znajdz.php'); // pliki ktorych nie chcesz
  7. $sll = array();
  8.  
  9. $dir = scandir($main);
  10.  
  11. foreach($dir as $file)
  12. {
  13. if($file != '.' && $file != '..' && (!in_array($file, $deny)) && (substr($file,-strlen('.php'))=='.php') )
  14. {
  15. if(!is_dir($file))
  16. {
  17. $all[] = $file;
  18. }
  19.  
  20. }
  21. }
  22.  
  23. return $all;
  24. }
  25.  
  26.  
  27.  
  28. $tabr = ShowAllTree('./');
  29.  
  30. $szukana = 'kota';
  31. $nr=0;
  32. foreach($tabr as $next)
  33. {
  34.  
  35.  
  36. $slowa = explode(" ",join(" ",file("./".$next)));
  37.  
  38. for($tmp=0;$tmp<count($slowa);$tmp++) {
  39.  
  40. if(strstr($slowa[$tmp],$szukana)){
  41. $nr++;
  42. $tmpData[]="[$nr]<br>";
  43. for($i=$tmp-5;$i<=$tmp+5;$i++){
  44. if(isset($slowa[$i]))
  45. {
  46. if($i==$tmp) {
  47. $tmpData[count($tmpData)-1].="<b>$slowa[$i]</b> <p>";
  48. }else{
  49. $tmpData[count($tmpData)-1].="$slowa[$i] ";
  50. }
  51. }
  52. }
  53. $tmpData[count($tmpData)-1].="...";
  54. $tmpData[count($tmpData)-1].="<p>";
  55. $tmpData[count($tmpData)-1].="<a HREF=$next>Wiecej...</A><p>";
  56. }
  57. }
  58.  
  59.  
  60.  
  61.  
  62. }
  63.  
  64.  
  65. foreach($tmpData as $val)
  66. {
  67.  
  68. print $val;
  69.  
  70. }
  71.  
  72.  
  73.  
  74.  
  75. ?>


Musisz dorobic sobie formularz i podpiac po to.

Tablica

  1. $deny = array('index.php', 'index2.php', 'znajdz.php');


zawiera nazwy plikow ktore chcesz pominac w wyszukiwaniu. Aktualnie do wyszukania sa tylko i wylacznie pliki .php. Jesl ichcesz zmienic na inne to mozesz sam to zrobic

  1. (substr($file,-strlen('.php'))=='.php') )


Ten post edytował sratatata2 12.06.2019, 20:57:08
Go to the top of the page
+Quote Post
inuma
post 13.06.2019, 21:13:30
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.06.2019

Ostrzeżenie: (0%)
-----


Działa świetnie. Pomogłeś. Dzięki.

Jest tylko jeden problem. Wyszukiwarka traktuje osobno wielkie i małe litery. Jak M to znajduje Matematyka jak m matematyka a tamtego już nie ma w listingu
jak usunąć to case sensitive
Go to the top of the page
+Quote Post
dublinka
post 14.06.2019, 08:19:32
Post #8





Grupa: Zarejestrowani
Postów: 200
Pomógł: 24
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


Do lower case jest funkcja strtolower();
Żeby było jak chcesz to musisz objąć szukaną frazę tą funkcją i ciag znaków rownież.Czyli to co jest w f. strtr(). Mozna tez zamienic wszystko na duże bo to znaczenia nie ma. Ważne żeby jedno i drugie mialo albo male albo duze litery zeby moc porownac. Jesli chcesz na duże (upper case) to strtoupper().
Dla wyniku to nie ma znaczenia bo to sie wykona w locie a wynik i tak sie wyswietli taki jaki jest w originale.

Ten post edytował dublinka 14.06.2019, 09:00:17
Go to the top of the page
+Quote Post
inuma
post 14.06.2019, 11:43:39
Post #9





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.06.2019

Ostrzeżenie: (0%)
-----


ale gdzie dokładnie wpisać to strtolower()
Go to the top of the page
+Quote Post
dublinka
post 14.06.2019, 12:08:55
Post #10





Grupa: Zarejestrowani
Postów: 200
Pomógł: 24
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


Cytat(inuma @ 14.06.2019, 11:43:39 ) *
ale gdzie dokładnie wpisać to strtolower()


Przeczytaj odpowiedz wyżej.

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.08.2019 - 13:24