Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wydajne przeszukiwanie tekstu w PHP
Thomashek
post 22.08.2008, 09:36:35
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.12.2007

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


Potrzebuję jak najszybszej metody do przeszukiwania tekstu w PHP (przy czym wolałbym nie implementować "ręcznie" znanych w tej dziedzinie algorytmów, jeśli wydajna metoda już istnieje). Mając duży tekst, chcę znaleźć w nim wystąpienia kilku wzorców (wyrazów). Pytanie: jak wygląda wydajność strpos? a preg_match? Jest jakiś wydajniejszy sposób na szukanie wystąpień?
Go to the top of the page
+Quote Post
elemek
post 22.08.2008, 10:22:40
Post #2





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


preg_match() jest najwydajniejszą metoda szukania

Ten post edytował elemek 22.08.2008, 14:51:15


--------------------
Rzecz trudną rozbijam na kilka łatwiejszych :)
Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
zimi
post 22.08.2008, 14:32:16
Post #3





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


smutek mnie czasem ogarnia jak czytam posty na forum :/

Cytat(elemek)
preg_match jest najwydajniesza metoda

do czego?O.o
Cytat(manual php)
Do not use preg_match() if you only want to check if one string is contained in another string. Use strpos() or strstr() instead as they will be faster.


@Thomashek: jak patrzę na tekst o "znanych algorytmach w tej dziedzinie" to zaczynam się zastanawiać czego Ty w ogóle chcesz? wiesz czym się różni strpos od preg_match w ogóle?
jeśli masz słowo które chcesz znaleźć użyj strpos
jeśli masz wyrażenie regularne które chcesz znaleźć użyj preg_match
Go to the top of the page
+Quote Post
elemek
post 22.08.2008, 14:54:16
Post #4





Grupa: Zarejestrowani
Postów: 71
Pomógł: 24
Dołączył: 14.08.2008

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


Cytat(zimi @ 22.08.2008, 15:32:16 ) *
smutek mnie czasem ogarnia jak czytam posty na forum :/

do czego?O.o


Kolega czytać nie umie? aaevil.gif

Chodzi o szukanie wzorców (wyrazów), a nie wystąpień ciągu w ciągu.

np wyrazu "kot" w zdaniu "Kot, który wpadł pod pociąg w Mokotowie twierdzi, że jest niewinny.";


--------------------
Rzecz trudną rozbijam na kilka łatwiejszych :)
Pomogłem? Kliknij Pomógł.
Go to the top of the page
+Quote Post
Thomashek
post 22.08.2008, 15:02:14
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.12.2007

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


Cytat(zimi @ 22.08.2008, 15:32:16 ) *
@Thomashek: jak patrzę na tekst o "znanych algorytmach w tej dziedzinie" to zaczynam się zastanawiać czego Ty w ogóle chcesz? wiesz czym się różni strpos od preg_match w ogóle?


Wiem czym się różni od strony użycia. Nie wiem, w jaki sposób jest zaimplementowane - jeśli, dajmy na to, wyszukiwanie wzorca poprzez strpos odbywa się w czasie ilość wzorców*(długość tekstu^2), to nie jest to perspektywa napawająca nadzieją. A z kolei, jeśli preg_match potrafi wykonać to samo zadanie w czasie liniowym, to wiadomo, iż w takiej sytuacji byłoby lepsze użycie preg_match (pod warunkiem, że działa w takim czasie). Pytałem o wydajność, najszybszą metodę do zrealizowania problemu postawionego w pierwszym poście.

Ten post edytował Thomashek 22.08.2008, 15:04:18
Go to the top of the page
+Quote Post
zimi
post 22.08.2008, 15:05:36
Post #6





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


no właśnie nie jestem pewien co ma na myśli autor topicu pod pojęciem wzorca
bo jego post przysparza we mnie wątpliwości
interpretację problemu nadałeś Ty swoim postem, a nie autor
a zestawienie funkcji preg_match i strpos przy wyszukiwaniu może we mnie budzić co najwyżej wrażenie że @Thomashek nie zupełnie wie o czym piszę

pytanie o porównanie ich wydajności też jest dość absurdalne gdyby użytkownik miał świadomość ich działania

PS. testy wydajnościowe można sobie zrobić łatwo samemu szczególnie że nie potrzebujesz zbyt wyrafinowanych danych wejściowych
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: 14.08.2025 - 14:48