Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Parser HTML, Prosty, acz zasobożerny parser HTML
b4rt3kk
post
Post #1





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Witam,
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.
  1. $parser = new HTMLparser();

Dostępne są 3 metody pobierania HTML, który będziemy parsować:
- z pliku
  1. $parser->parseFile($dir);

- ze stringa
  1. $parser->parseString($string);

- z URL
  1. $parser->parseUrl($url);


Następnie wywołanie parsera:
  1. $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:

  1. foreach ($resource as $div) {
  2. echo $div->text;
  3. echo $div->html;
  4. echo $div->class;
  5. // itd.
  6. }


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.
  1. foreach ($resource as $div) {
  2. echo $div->find('a', 0)->href;
  3. }


Możliwość zagnieżdżania jest nieograniczona.

Ten post edytował b4rt3kk 4.10.2013, 13:31:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 09:43