Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [solved] [PHP] Parę słów wstecz i parę słów w przód od wyszukiwanej frazy
leovandamon
post 4.08.2008, 12:40:32
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Hi all!

Przechodząc od razu do sedna sprawy - piszę skrypt wyszukiwarki.
Mam już prawie wszystko gotowe, jednak próbuję uzyskać taki efekt:

Link z nazwą podstrony
...kawałek treści wyszukiwana fraza kawałek treści...
adres podstrony

I mam problem właśnie z tym "
kawałek treści". Jak zrobić, żeby wyświetlało powiedzmy, 40 znaków / 5 słów przed szukaną frazą i tak samo po niej?

Pozdrawiam,
Leo van Damon

Ten post edytował leovandamon 4.08.2008, 14:00:33


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post
jarmiar
post 4.08.2008, 12:43:44
Post #2





Grupa: Zarejestrowani
Postów: 616
Pomógł: 12
Dołączył: 16.07.2006
Skąd: : getCity ( );

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


hmmm, np możesz sobie wstawić explode na jakiś znak który często się powtarza


--------------------
Jeśli my czegoś nie zrobimy, zrobią to za nas inni
Go to the top of the page
+Quote Post
leovandamon
post 4.08.2008, 12:49:15
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Zapomniałem dopisać. Najczęściej powtarza się spacja, jednak tablica z explodezawierałaby parę tysięcy elementów.
Próbowałem z strstr i stristr, jednak, gdy zgodnie z manualem dodawałem trzeci parametr, otrzymywałem błąd.


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post
Moli
post 4.08.2008, 12:53:36
Post #4





Grupa: Zarejestrowani
Postów: 662
Pomógł: 45
Dołączył: 26.03.2007
Skąd: Warszawa

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


@jarmiar - Aleś wymyślił LOL.

Do ucinania tekstu służy funkcja substr(). Możesz obliczyć kolejność szukanego tekstu i na nim wyświetlić tekst wstecz i tekst po.
Go to the top of the page
+Quote Post
leovandamon
post 4.08.2008, 13:16:45
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Sprawdzam...

Nie, wciąż to nie to. Opiszę to inaczej.
Mam zmienną $tresc zawierającą treść podstrony. Mam zmienną $query zawierającą tekstowe zapytanie usera.
Chcę znaleźć w zmiennej $tresc pierwsze wystąpienie $query, wyświetlić kilka słów przed nim i kilka po nim, przy czym pogrubić $query.
(Sorry, że nie napisałem tego na początku).


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post
f1xer
post 4.08.2008, 13:26:17
Post #6





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


  1. <?php
  2. $pozycja=strpos($tresc, $query); //zwraca int (pozycja $query w $tresc)
  3. $doWyswietlenia=substr($tresc,$pozycja-50,strlen($query)+100); // 50 znaków przed i 50 znaków po wystąpieniu $query
  4. $doWyswietlenia=str_replace($query, "<b>".$query."</b>",$doWyswietlenia); // pogrubi wystąpienie $query
  5. //i tutaj wyswietlenie zmiennej $doWyswietlenia.
  6. ?>


Pisane z głowy ale powinno zadziałać

Ten post edytował f1xer 4.08.2008, 13:32:22


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
leovandamon
post 4.08.2008, 13:46:00
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Działa po drobnej modyfikacji (olśnienie happy.gif ) - nie strlen($query)+50, ale strlen($query)+100.

Kod
        $pozycja = strpos($tresc, $query);
        $tresc = substr($tresc,$pozycja-50,strlen($query)+100);
        $tresc = str_replace($query, '<b>'.$query.'</b>', $tresc);


Na początku wyświetlało tylko tekst sprzed $query. Zastanawiając się czemu i przeglądając jeszcze raz manual dowiedziałem się czemu.
Cytat
substr($s,$o,$l) - Funkcja zwraca podciąg ciągu $s, począwszy od indeksu $o, składający się z $l liter

A ja miałem to cały czas przed nosem, jak wół wypisane... Załamka...

No nic, dzięki serdeczne. Widać, że są na tym świecie ludzie, którzy chętnie pomogą innym...

EDIT:
O, zmieniłeś. ^^

Pozdrawiam,
Leo van Damon.

Ten post edytował leovandamon 4.08.2008, 13:52:35


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
Go to the top of the page
+Quote Post
f1xer
post 4.08.2008, 13:50:08
Post #8





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


skoro już to masz za sobą to polecam zmienić coś w tym kodzie biggrin.gif chodzi o te wielokropki, żeby je dodać a i zamias <b></b> zamień to na standard xhtml np: <span style='font-weight:bold;'> </span> tak chyba będzie lepiej


--------------------
Pomogłem? wyraź to i kliknij "Pomógł"
Go to the top of the page
+Quote Post
leovandamon
post 4.08.2008, 13:58:54
Post #9





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 5.01.2008
Skąd: Czwarty Świat

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


Na jakiś czas udostępniam obecną wersję projektu, do którego potrzebny był ten właśnie kod - http://bit.nightdream.kicks-ass.org:8080/.

I jeszcze raz, serdeczne dzięki.

Pozdrawiam,
Leo van Damon


--------------------
Mój blog: http://test.dragonsheart.eu/
DH Corp: http://www.dhcorp.pl/
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: 13.06.2025 - 09:13