Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wyniki szukania.
moto0095
post 24.04.2010, 18:24:27
Post #1





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

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


Witam. Szukałem w google jak by co winksmiley.jpg
A więc zrobiłem sobie ostatnio skrypt wyszukiwarki, która przeszukuje plik tekstowy o treści:
Adres do pliku | tytuł | opis

Wyniki wyświetlają się w postaci:
<a href="adres do pliku">tytuł</a> <br> opis

Wyszukiwarka ta przeszukuje tylko opis.
I mam takie pytanko : Jak wyświetlić wyniki szukania w taki sposób:
... słowo słowo szukane-słowo słowo słowo ... questionmark.gif

P.s. Jeżeli były już takie tematy to dajcie linka winksmiley.jpg
Go to the top of the page
+Quote Post
tehaha
post 24.04.2010, 18:32:51
Post #2





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

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


a nie możesz zrobić tego zwykłym str_replace() ?
Go to the top of the page
+Quote Post
moto0095
post 24.04.2010, 18:46:39
Post #3





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

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


Ale ta funkcja służy do podmieniania ciągu znaków, więc co mi to da questionmark.gif
Go to the top of the page
+Quote Post
tehaha
post 24.04.2010, 18:49:51
Post #4





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

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


no z tego co zrozumiałem to chcesz pogrubić szukane słowo w tekście więc tą funkcją podmienisz szukane-słowo na <b>szukane-słowo</b>

Ten post edytował tehaha 24.04.2010, 18:50:27
Go to the top of the page
+Quote Post
moto0095
post 24.04.2010, 19:08:09
Post #5





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

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


nie, chodzi mi o te słowa za i przed szukanym wyrazem winksmiley.jpg
Chciałbym aby przed i po szukanym wyrazie wyświetlały się 3 słowa sąsiadujące winksmiley.jpg

Bo pogrubienie sam sobie zrobiłem winksmiley.jpg

Ten post edytował moto0095 24.04.2010, 18:59:01
Go to the top of the page
+Quote Post
tehaha
post 24.04.2010, 19:20:25
Post #6





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

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


to może zapisz tekst do tablicy rozbijając go na spacjach funkcją implode(), potem funkcją array_search() lub array_keys() pobierzesz klucz/klucze dla tego słowa i wyświetlisz dodatkowo 3 wartości za tym kluczem i przed, ale trzeba by jeszcze uwzględnić jakoś znaki specjalne żeby nie były liczone jako słowa
Go to the top of the page
+Quote Post
ave
post 25.04.2010, 15:40:02
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


  1. $tekst = 'chciałbym aby przed i po szukanym wyrazie wyświetlały się 3 słowa sąsiadujące';
  2. $szukane = 'wyrazie';
  3. echo preg_replace('/(([^ ]* )?'.$szukane.'( [^ ]*)?)/','<b>$1</b>',$tekst );
Go to the top of the page
+Quote Post
moto0095
post 26.04.2010, 14:45:50
Post #8





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

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


Zrobiłem tak jak radził kolega wyżej i wyświetliło się:
chciałbym aby przed i po szukanym wyrazie wyświetlały się 3 słowa sąsiadujące

wyświetlił się cały tekst a ja chciałbym aby wyniki wyświetlały się tak:
... jeden dwa trzy szukane jeden dwa trzy...
Go to the top of the page
+Quote Post
Wicepsik
post 26.04.2010, 14:59:46
Post #9





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. $wyraz = 'wyrazie';
  2.  
  3. $tekst = 'chciałbym aby przed i po szukanym wyrazie wyświetlały się 3 słowa sąsiadujące';
  4. $t = explode(' ', $tekst);
  5. $k = array_search($wyraz, $t);
  6.  
  7. for($i=-3; $i<4; $i++){
  8. echo $t[$k+$i].'<br/>';
  9. }


Ten post edytował Wicepsik 26.04.2010, 15:00:51


--------------------
Go to the top of the page
+Quote Post
moto0095
post 26.04.2010, 15:33:18
Post #10





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

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


Wielkie dzięki Wicepsik winksmiley.jpg

Witam ponownie.
Teraz mam taki problem skrypt podany przez Wicepsik'a połączyć z tym:
  1. $plik = "dane.txt";
  2. $dane = file($plik);
  3.  
  4. if ((isset($_POST['szuk'])) AND (trim($_POST['szuk']) != "")) {
  5.  
  6. echo "Szukane słowo: <b>".$search."</b><br /><br />";
  7.  
  8. for($i=0;$i<count($dane);$i++) /* przeszukuję tablicę */
  9. list($adres[$i], $tytul[$i], $text[$i]) = explode(" | ", $dane[$i]);
  10.  
  11. for($i=0;$i<count($text);$i++)
  12. if (strpos($text[$i],$_POST['szuk']) !== false)
  13.  
  14. echo "<a href='".$adres[$i]."'>".$tytul[$i]."</a><br />".$text[$i]."<br />";
  15. }
  16.  



questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif

Ten post edytował moto0095 26.04.2010, 15:33:50
Go to the top of the page
+Quote Post
Wicepsik
post 26.04.2010, 15:56:12
Post #11





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. if ((isset($_POST['szuk'])) AND (trim($_POST['szuk']) != "")) {
  2.  
  3. echo "Szukane słowo: <b>".$search."</b><br /><br />";
  4.  
  5. for($i=0;$i<count($dane);$i++) /* przeszukuję tablicę */
  6. list($adres[$i], $tytul[$i], $text[$i]) = explode(" | ", $dane[$i]);
  7.  
  8. for($i=0;$i<count($text);$i++)
  9. if (strpos($text[$i],$_POST['szuk']) !== false)
  10.  
  11. $t = explode(' ', $text[$i]);
  12. $k = array_search($_POST['szuk'], $t);
  13.  
  14. for($i=-3; $i<4; $i++){
  15. echo $t[$k+$i].'<br/>';
  16.  
  17. }
  18.  
  19.  
  20. echo "<a href='".$adres[$i]."'>".$tytul[$i]."</a><br />".$text[$i]."<br />";
  21. }


--------------------
Go to the top of the page
+Quote Post
moto0095
post 27.04.2010, 08:19:09
Post #12





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

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


Coś to nie za bardzo działa
chodzi mi o to aby wyświetlało się tak
<a href="$adres">Tytuł</a></br>
... jeden dwa trzy szukane jeden dwa trzy ...


questionmark.gifquestionmark.gif

Okey, poradziłem sobie:
  1. $plik = "dane.txt";
  2. $dane = file($plik);
  3.  
  4. if ((isset($_POST['szuk'])) AND (trim($_POST['szuk']) != "")) {
  5.  
  6. echo "Szukane słowo: <b>".$search."</b><br /><br />";
  7.  
  8. for($i=0;$i<count($dane);$i++){ /* przeszukuję tablicę */
  9. list($adres[$i], $tytul[$i], $text[$i]) = explode(" | ", $dane[$i]);
  10. }
  11. for($i=0;$i<count($text);$i++){
  12.  
  13.  
  14. $wyraz = $_POST['szuk'];
  15. $tekst = $text[$i];
  16. $t = explode(' ', $tekst);
  17. $k = array_search($wyraz, $t);
  18.  
  19.  
  20. if (strpos($text[$i],$_POST['szuk']) !== false){
  21. echo "<a href='".$adres[$i]."'>".$tytul[$i]."</a><br />";
  22. for($j=-3; $j<4; $j++){
  23. echo "".search_highlight($t[$k+$j], $search)." ";
  24. }
  25. echo "<br />";
  26. }
  27. }
  28. }


plik dane.txt wygląda tak:
  1. index.php | Strona 1 | strona bardzo mila i bardzo ladna i bardzo nie brzydka i bardzo fajna
  2. index2.php | Strona 2 | strona bardzo nie mila i bardzo nie ladna i bardzo brzydka i bardzo nie fajna



i jak wpiszę np. słowo bardzo to wyświetli się:
  1. Strona 1
  2. strona bardzo mila i bardzo
  3. Strona 2
  4. strona bardzo nie mila i


a jak zrobić ,żeby wyświetlało się tak
  1. Strona 1
  2. strona bardzo mila... i bardzo ladna... i bardzo nie brzydka... i bardzo fajna...


questionmark.gif

questionmark.gif

Po prostu jak zrobić tak aby wyświetlało te 3 słowa sąsiadują ce ale do każdego znalezionego słowa questionmark.gifquestionmark.gifquestionmark.gif
Go to the top of the page
+Quote Post
tehaha
post 27.04.2010, 09:08:24
Post #13





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

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


napisałem Ci kilka postów wyżej, użyj array_keys() , wtedy będziesz miał zwrócone wszystkie klucze szukanego słowa w rozbitym ciągu, następnie to wyświetlanie zrób w pętli
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:59