Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydajne przeszukiwanie tekstu w PHP
Forum PHP.pl > Forum > PHP
Thomashek
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ń?
elemek
preg_match() jest najwydajniejszą metoda szukania
zimi
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
elemek
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.";
Thomashek
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.
zimi
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.