Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z wyszukiwarką .
moto0095
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Witam. Napotkałem problem z którym nie mogę sobie poradzić (IMG:style_emoticons/default/sad.gif)
Mam sobie wyszukiwarkę która w danym pliku szuka ciągu znaków który wpisaliśmy w pole input
I ja mam taką strukturę dokumentu:
  1. <html>
  2. <head>
  3. <?
  4. if(isset($_GET['BLA'])){
  5. echo "<title>BLA_BLAA</title>";
  6. }else
  7. if(isset($_GET['DDD'])){
  8. echo "<title>DDDDDDDDDDDDDDDDDDDDDDDD</title>";
  9. }
  10. echo "<title>AAAAAAAAAAAAAAAAAAAAAAAAAAA</title>";
  11. ?>
  12. <head>
  13. <dody>
  14. <?
  15. if(isset($_GET['BLA'])){
  16. echo "BLA_BLAA";
  17. }else
  18. if(isset($_GET['DDD'])){
  19. echo "DDDDDDDDDDDDDDDDDDDDDDDD";
  20. }
  21. echo "AAAAAAAAAAAAAAAAAAAAAAAAAAA";
  22. ?>
  23. </body>
  24. </html>


Wyszukiwarka ta zwraca wyniki w postaci
TYTUŁ - opis...

Jak wpiszemy np: DD to powinno zwrócić:
DDDDDDDDDDDDDDDDDDDDDDDD - DDDDDDDDDDDDDDDDDDDDDDDD

A wyświetla się :
BLA_BLAA -

Tytuł strony otrzymuję po przez funkcję :
  1. preg_match_all('#<title>(.*?)</title>#', $string, $wynik);


próbowałem zrobić coś takiego:
  1. preg_match_all('#if(isset($_GET['(.*?)'])){
  2. echo "<title>(.*?)</title>";#', $string, $wynik);


ale to nie działa.
I ja nie wiem jak zrobić tak aby wyświetlało się tak jak podałem wyżej (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował moto0095 22.04.2010, 15:41:47
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 28)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


ale w takim czymś
  1. $_GET['BLA']
to BLA to jest jako nazwa pola input, a nie wartość wpisana do niego, jeżeli chcesz rozpatrywać przypadki względem wartości przekazanej to robisz
  1. if($_GET['nazwa_pola_input'] == 'BLA')
  2. {
  3. //
  4. } else if($_GET['nazwa_pola_input'] == 'DDD')
  5. {
  6. }


jeżeli masz więcej przypadków użyj switch
Go to the top of the page
+Quote Post
moto0095
post
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


(isset($_GET['BLA'])) - używam tego aby osiągnąć adres index.php?BLA i nie jest to żadna nazwa pola input (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


masz rację ale głupotę walnąłem, zasugerowałem się tym, że w wyszukiwarkach często przesyła się dane metodą GET
Go to the top of the page
+Quote Post
moto0095
post
Post #5





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Jak już napisałem wyszukiwarka wyświetla mi wyniki w postaci <title></title> tylko że zawsze title są równe BLA_BLAA.
A ja chciałbym zrobić tak:
jeżeli szukane słowo znajduje się w
if (isset($_GET["DDD"])){
echo "szukane słowo";
}

to żeby podało title przypisane do tej zmiennej.

Albo inaczej, czy da się wyświetlić pełny adres części strony w którym się szukane słowo znajduje
np: katalog/index.php?BLA (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Czyli, jeżeli dobrze rozumiem, chcesz przypisać <title> zmienną wyszukaną w treści strony?
Go to the top of the page
+Quote Post
moto0095
post
Post #7





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Tak (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Hmm, nie rozumiem, co tu kombinować, skoro pobrałeś już z formularza zmienną, to:
  1. <?php
  2. if(isset($_GET['pobrana_wartosc'])){
  3. $title = $_GET['pobrana_wartosc'];
  4. }
  5. echo '<title>" . $title . "</title>';
  6. ?>

To samo z linkiem:
  1. <?php
  2. echo '<form action="index.php?tytul='.$title .'" method="get">
  3. ?>


Ten post edytował Kshyhoo 22.04.2010, 17:48:19
Go to the top of the page
+Quote Post
moto0095
post
Post #9





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Nie o to tu chodzi.
Może inaczej.
Mam plik index.php i plik szukarka.php
Zawartość index.php to
  1. <html>
  2. <head>
  3. <?
  4. if(isset($_GET['BLA'])){
  5. echo "<title>KOT ma mleko </title>";
  6. }else
  7. if(isset($_GET['DDD'])){
  8. echo "<title>ALA ma kota</title>";
  9. }
  10. echo "<title>INNE coś</title>";
  11. ?>
  12. <head>
  13. <dody>
  14. <?
  15. if(isset($_GET['BLA'])){
  16. echo "KOT";
  17. }else
  18. if(isset($_GET['DDD'])){
  19. echo "ALA";
  20. }
  21. echo "Inne";
  22. ?>
  23. </body>
  24. </html>


W pliku szukarka.php jest formularz z inpute o nazwie szukane.
I jeżeli wpiszemy do tego inputa słowo ALA
to chciałbym aby wyniki szukania wyglądały tak:
Ala ma kota - ALA.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #10





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No to:
  1. <?php
  2. if(isset($_GET['DDD'])){
  3. echo '<title>ALA ma kota - '.$_GET['DDD'].'</title>';
  4. }
  5. ?>


Ten post edytował Kshyhoo 22.04.2010, 17:57:42
Go to the top of the page
+Quote Post
moto0095
post
Post #11





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Ale ta wyszukiwarka nie przeszukuje jednego pliku.
A jak wpiszę na KOT (IMG:style_emoticons/default/questionmark.gif)
Po prostu nie wiem jak zrobić (bo coś funkcją preg_match_all mi nie działa , albo coś źle robię) aby wyświetliły się title i echo przypisane np do ?KOT_ma_mleko
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #12





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To nie istotne, gdzie wyszukuje, bo możesz w linku przenieść albo w sesji do pliku, gdzie ma być wykorzystany.
Go to the top of the page
+Quote Post
moto0095
post
Post #13





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


To ja może dam kod wyszukiwarki:
  1. <?
  2. $szukane = $_POST['szukane'];
  3.  
  4. function drzewko($folder) {
  5. global $pliki;
  6. if($folder != "/") {
  7. $folder .= "/";
  8. }
  9. $id_f = opendir($folder);
  10. if($id_f) {
  11. while($plik = readdir($id_f)) {
  12. if($plik == '.' || $plik == '..') {
  13. continue;
  14. }
  15. if(is_dir($folder . $plik)) {
  16. drzewko($folder . $plik);
  17. } else {
  18. $pliki[] = $folder . $plik;
  19. }
  20. }
  21. closedir($id_f);
  22. }
  23. return $pliki;
  24. }
  25.  
  26. function czytelne($spis) {
  27. $rozszerzenie[] = "txt";
  28. $rozszerzenie[] = "dat";
  29. $rozszerzenie[] = "php";
  30. $rozszerzenie[] = "php3";
  31. $rozszerzenie[] = "phtml";
  32. $rozszerzenie[] = "htm";
  33. $rozszerzenie[] = "html";
  34. foreach($rozszerzenie as $roz) {
  35. $dl_roz = strlen($roz);
  36. foreach($spis as $plik) {
  37. if(substr($plik, -$dl_roz) == $roz) {
  38. $wynik[] = $plik;
  39. }
  40. }
  41. }
  42. return $wynik;
  43. }
  44.  
  45. //======================================================================
  46.  
  47. if(isset($szukane) && $szukane != '') {
  48. $szukane = ereg_replace("[\*\.\$/]", "", $szukane);
  49. $szukane_slowa = split("\ ", $szukane);
  50. array_unshift($szukane_slowa, $szukane);
  51. $ile_slow = count($szukane_slowa);
  52. unset($szukane);
  53.  
  54. $pliki = drzewko(".");
  55. $czytelne = czytelne($pliki);
  56. unset($pliki);
  57. sort($czytelne);
  58.  
  59.  
  60. //======================================================================
  61. function ciach($tresc,$ile)
  62. {
  63. $licz = strlen($tresc);
  64. if ($licz>=$ile)
  65. {
  66. $tnij = substr($tresc,0,$ile);
  67. $txt = $tnij."...";
  68. }
  69. else
  70. {
  71. $txt = $tresc;
  72. }
  73. return $txt;
  74. }
  75. //======================================================================
  76.  
  77.  
  78.  
  79.  
  80. foreach($czytelne as $plik) {
  81. $id_pliku = fopen($plik, "r");
  82. $zawartosc = fread($id_pliku, filesize($plik));
  83. for($i=0; $i < $ile_slow; $i++) {
  84. if(ereg($szukane_slowa[$i], $zawartosc)) {
  85.  
  86. $string = file_get_contents($katalog.$plik);
  87. preg_match_all('#<title>(.*?)</title>#', $string, $wynik);
  88.  
  89. $tresc = strip_tags($zawartosc);
  90. $ile = 100;
  91. $trafienia[] = "<a href='".$katalog.$plik."'>".$wynik[1][0]."</a> - ".ciach($tresc,$ile)."<br />";
  92. }
  93. }
  94. fclose($id_pliku);
  95. }
  96.  
  97. if(!isset($trafienia)) {
  98. echo "Niestety nie znaleziono nic co by pasowało do twojego zapytania. Powrót";
  99. } else {
  100. $trafienia = array_unique($trafienia);
  101. sort($trafienia);
  102. foreach($trafienia as $pojedyncze) {
  103. echo $pojedyncze .'';
  104. }
  105. }
  106. } else {
  107. echo "Przecież chciałeś czegoś szukać! Powrót";
  108. }
  109. ?>
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #14





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To ma być wyszukiwanie w treści artów, czy w plikach?
Go to the top of the page
+Quote Post
moto0095
post
Post #15





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


W treści artykułu.

Jak widać tutaj
  1. $trafienia[] = "<a href='".$katalog.$plik."'>".$wynik[1][0]."</a> - ".ciach($tresc,$ile)."<br />";


Wyniki wyświetlane są Jako nazwa strony.
Tylko funkcja ta wyświetla pierwszy napotkany w pliku <title></title>.
A ja chciałbym aby wyświetlał tytle postawione pod zmienną.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #16





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie kumam, co chcesz osiągnąć. Może ta funkcja Ci pomoże (podświetla słowa wpisane w wyszukiwarkę):
  1. function highlight_words($word, $subject) {
  2. if (is_array($word)) {
  3. $regex_chars = "*|#.+?(){}[]^$/";
  4. for ($j = 0; $j < count($word); $j++) {
  5. for ($i = 0; $i < strlen($regex_chars); $i++) {
  6. $char = substr($regex_chars, $i, 1);
  7. $word[$j] = str_replace($char, '\\'.$char, $word[$j]);
  8. }
  9. $subject = preg_replace("/(".$word[$j].")/is", "<span style='background-color: yellow; font-weight: bold; padding-left: 2px; padding-right: 2px'>\\1</span>", $subject);
  10. }
  11. }
  12. return $subject;
  13. }
Go to the top of the page
+Quote Post
moto0095
post
Post #17





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Zauważyłem, i postaram ci się może jakoś jaśnie wytłumaczyć:
Widzisz do zmiennej $_GET['coś_tam'] są przypisane wartości:
echo "tekst"; i echo "<title></title>";
Funkcja preg_match_all wyświetla tylko pierwszy napotkany title.
Chodzi o to, że jak szukane słowo jest w $_GET['coś tam'] to wyświetliło by się title przypisane do zmiennej w której znajduje się szukane słowo.

I nie mam pojęcia jk się do tego zabrać (IMG:style_emoticons/default/sad.gif)

Ten post edytował moto0095 22.04.2010, 19:04:56
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #18





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Stary, wybacz, ale nie masz umiejętności przekazania swoich myśli. Może to Cię zadowoli:
  1. <?php
  2. if(isset($_GET['DDD']) && $_GET['DDD' == 'DDD'){
  3. echo '<title>ALA ma kota - '.$_GET['DDD'].'</title>';
  4. } else {
  5. echo 'echo "<title>INNE coś</title>";
  6. }
  7. ?>

A tak na marginesie, jeżeli tych warunków ma być więcej, to lepszy był by switch.
Go to the top of the page
+Quote Post
moto0095
post
Post #19





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Ja po prostu nie wiem za bardzo jak to wytłumaczyć, jeszcze pomyślę i napiszę później (IMG:style_emoticons/default/winksmiley.jpg)

Okey, postara się wytłumaczyć to tak.
Mam plik wyszukiwarki, który wyniki wyświetla w następujący sposób.
Nazwa Strony która jest jednocześnie odnośnikiem do pliku (<title></title>) - treść.

Mam oto plik nowe.php z treścią:
  1. <?
  2. if(isset($_GET['jeden'])){
  3. echo "<title>JEDEN</title>";
  4. echo "jeden";
  5. }else
  6.  
  7. if(isset($_GET['dwa'])){
  8. echo "<title>DWA</title>";
  9. echo "dwa";
  10.  
  11. }else
  12. echo "<title>TRZY</title>";
  13. echo " trzy ";
  14. ?>


czyli jak wpiszemy w przeglądarkę nowe.php?dwa to wyświetli się "dwa".

W inpucie wpisujemy np: dwa i powinno wyświetlić:
<a href="nowe.php?dwa">DWA</a> - dwa. <=== ja chcę aby się tak wyświetlało (IMG:style_emoticons/default/winksmiley.jpg)

Niestety wywieli się:
<a href="nowe.php">JEDEN</a> - (tutaj pusto) .



Teraz jaśniej (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #20





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Skoro umiesz przekazać zmienną tak:
  1. echo "<title>JEDEN</title>";

W czym problem przekazać ją tak:
  1. echo '<title>JEDEN</title> - '.$_GET['jeden'];

(IMG:style_emoticons/default/questionmark.gif)

Ten post edytował Kshyhoo 22.04.2010, 19:36:39
Go to the top of the page
+Quote Post
moto0095
post
Post #21





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Ale mi nie chodzi o TITLE. Widzę ,że nadal się nie rozumiemy (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #22





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




A o co chodzi? O link?
Go to the top of the page
+Quote Post
moto0095
post
Post #23





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Cytat
W inpucie wpisujemy np: dwa i powinno wyświetlić:
<a href="nowe.php?dwa">DWA</a> - dwa. <=== ja chcę aby się tak wyświetlało

Niestety wywieli się:
<a href="nowe.php">JEDEN</a> - (tutaj pusto) .


Ten post edytował moto0095 22.04.2010, 19:39:13
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #24





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Takie coś?
  1. echo '<a href="nowe.php?go"'.$_GET['jeden']'>'.$_GET['jeden'].'</a>';
Go to the top of the page
+Quote Post
moto0095
post
Post #25





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Nie za bardzo, ale już lepiej

Zobacz jak szukam jakiegoś słowa i jeżeli to słowo znajduje się w
  1. if(isset($_GET['dwa'])){
  2. echo "<title>DWA<title>";
  3. echo "dwa";
  4. }


to ma wyświetlić:
<a href="nowe.php?dwa">DWA</a> - dwa

jeżeli jednak słowo to znajduje w
  1. if(isset($_GET['trzy'])){
  2. echo "<title>TRZY<title>";
  3. echo "trzy";
  4. }


to ma wyświetlić:
<a href="nowe.php?trzy">TRZY</a> - trzy

chodzi mi o sam <title></title>


Wie ktoś jak to zrobić (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #26





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(moto0095 @ 22.04.2010, 20:36:36 ) *
Ale mi nie chodzi o TITLE. (



Cytat(moto0095 @ 22.04.2010, 21:20:51 ) *
chodzi mi o sam <title></title>


Wybacz, ale już przestałem wogóle łapać...
Go to the top of the page
+Quote Post
moto0095
post
Post #27





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


W wyświetlaniu wyników używam funkcji
  1. preg_match_all('#<title>(.*?)</title>#', $plik, $wynik);


pobiera ona tekst pomiędzy <title> a </title>

i jeżeli wpiszesz "dwa" to ja chciałbym aby funkcja ta pobrała tekst z pomiędzy <title> a <title> z tego co podałem powyżej.

Ten post edytował moto0095 22.04.2010, 21:10:09
Go to the top of the page
+Quote Post
mortus
post
Post #28





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Zaraz po tym
  1. preg_match_all('#<title>(.*?)</title>#', $plik, $wynik);
wydrukuj sobie zawartość zmiennej $wynik za pomocą kodu
  1. echo '<pre>'; print_r($wynik); echo '</pre>';
Zobaczymy, co się pod tą zmienną kryje, choć podejrzewam że tablica, po której należałoby się w pętli poruszać.
Go to the top of the page
+Quote Post
moto0095
post
Post #29





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 12.03.2010

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


Jeszce raz.
Przeszukamy np plik szukane.php

szukane php
  1. if(isset($_GET['costam1'])){
  2. echo "<title>JUUUUPI</title>";
  3. echo "jupi";
  4. }else
  5.  
  6. if(isset($_GET['costam2'])){
  7. echo "<title>GOOOOD</title>";
  8. echo "good";
  9. }


szukamy słowa "good".

Tak jak już mówiłem wyszukiwarka wyniki szukania wyświetla w postaci:
<a href="costam">Tytuł strony (<title></title>)</a> - opis (ale opis sam potrafię zrobić)

więc chcę aby wyniki szukania wyświetliły się w postaci:
<a href="szukane.php?costam2">GOOOOD</a> - good

a wyświetla mi
<a href="szukane.php">GOOOOD</a> - good
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 22.08.2025 - 12:21