Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [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ć 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 questionmark.gif

Ten post edytował moto0095 22.04.2010, 15:41:47
Go to the top of the page
+Quote Post
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 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 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 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 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ć 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 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 winksmiley.jpg

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



Teraz jaśniej 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'];

questionmark.gif

Ten post edytował Kshyhoo 22.04.2010, 19:36:39


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 01:09