przedstawiam do oceny parser HTML mojego autorstwa.
Plik do pobrania:
http://www.filedropper.com/htmlparserclassphp
Opis:
Zasada działania jest prosta, wystarczy zaincludować plik z klasą, która znajduje się w powyższym pliku. Następnie utworzyć nowy obiekt, np.
$parser = new HTMLparser();
Dostępne są 3 metody pobierania HTML, który będziemy parsować:
- z pliku
$parser->parseFile($dir);
- ze stringa
$parser->parseString($string);
- z URL
$parser->parseUrl($url);
Następnie wywołanie parsera:
$resource = $parser->find('div');
Jako wynik zmienna $resource będzie przechowywać tablicę obiektów DIV-ów znalezionych w parsowanym źródle, bądź jeden obiekt, jeśli w metodzie find jako drugi argument podamy liczbę (wtedy zwróci n-ty DIV z parsowanego źródła).
Odczyt informacji:
Odczyt jest bardzo prosty, każdy wynik zawiera obiekty text oraz html, ponadto jeśli DIV posiada atrybuty, np. class bądź id zostaną one zwrócone również w postaci obiektów. Przykład:
foreach ($resource as $div) { // itd. }
To tak po krótce tytułem wstępu. Jednak parser wymaga optymalizacji, ponieważ czas parsowania średniej wielkości źródła jest dosyć długi. Proszę o oceny, a także o wskazanie dalszej drogi rozwoju owego parsera (zastanawiałem się jeszcze nad wyszukiwaniem elementów HTML np. po class, bądź po ID, jednak w tym momencie nie mam jeszcze pomysłu jak to zrealizować, bo już teraz parser w obecnej formie jest dość "ciężki"). Pozdrawiam i dzięki za ewentualne sugestie.
EDIT:
Zapomniałem dodać, możemy również szukać dzieci naszych wynikowych obiektów, np.
foreach ($resource as $div) { }
Możliwość zagnieżdżania jest nieograniczona.