Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Czym parsować HTML/XHTML?
ignition
post 12.11.2005, 19:11:01
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 14.06.2004

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


Czym parsować HTML/XHTML?? Chciałbym zrobić edytor stron, które już istnieją (np. o2.pl tongue.gif ).
Tak aby załadować każdą stronę, nawet, te które są niezgodne ze standardami - w takim przypadku większość. Najlepiej, bybyło, aby parser nie ładował struktóry strony do pamięci, ponieważ źle później ją składa.
Próbowałem bezskutecznie z:
- Dom z opcją loadHtml (miejwięcej idzie, ale tylko miejwięcej:P - czyli błędnie )
- Simplexml (nic nie daje )
- wyższe opcje z poprawieniem strony w tidy (czasami na oko wygląda dobrze, ale tylko czasami - czyli nic to nie daje )
Proszę o pomoc!!!

Ten post edytował ignition 12.11.2005, 19:12:28
Go to the top of the page
+Quote Post
dr_bonzo
post 12.11.2005, 19:55:01
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Do HTML dolaczyli XML tworzac XHTML co pozwala na latwiejsze parsowanie takich dokumentow, parsery odrzucaja dokumenty, ktore nie sa poprawnymi plikami XML (patrz prawie kazdy HTML). Brudny (untidy) html jest trudny w parsowaniu -- parser musi sie domyslac co tworca kodu mial na mysli, musi poprawiac jego bledy (ale jak??). Wniosek -- parsowanie brudnego HTMLa jest trudne.

W jaki sposob chcesz edytowac te strony? Nie wystrczy ci podglad kodu?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
ignition
post 12.11.2005, 21:45:34
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 14.06.2004

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


Wiem o tym i dlatego potrzebuje parsera, który nie będzie wczytywał struktóry do pamięci (dzięki temu nie zmodyfikuje zbytnio kodu), lecz będzie odnajdywał element (które są znacznikami html/xhtml) posiadające tekst ( np: <p>tekst</p> ).
Gdy odnajdzie taki element przykładowo zmieni ten tekst na formularz lub dołączy odnośnik do strony, w której będzie można zedytować te dane.
Po drugie nie wystarczy mi podgląd kodu ponieważ ten skrypt ma być stosowany przez takich co się na html/xhtml nie znają lub takich co chcą szybko zmienić swoją stronę.
Go to the top of the page
+Quote Post
060156
post 7.04.2006, 07:51:01
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

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


Tutaj masz przyklad kodu:
  1. <?php
  2.  $html = stripslashes($html);
  3. $a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
  4. foreach($a as $i=>$e)
  5. {
  6. if($i%2==0)
  7. {
  8. //Text
  9. }
  10. else
  11. {
  12. //Tag
  13. if($e{0}=='/')
  14. $this->CloseTag(strtoupper(substr($e,1)));
  15. else
  16. {
  17. //Extract attributes
  18. $a2=explode(' ',$e);
  19. $tag=strtoupper(array_shift($a2));
  20. $attr=array();
  21. foreach($a2 as $v)
  22. if(ereg('^([^=]*)=["']?([^"']*)["']?$',$v,$a3))
  23. $attr[strtoupper($a3[1])]=$a3[2];
  24. $this->OpenTag($tag,$attr);
  25. }
  26. }
  27. }
  28. }
  29.  
  30.  
  31. function OpenTag($tag,$prop)
  32. {  //Opening tag
  33.  }
  34.  
  35. function CloseTag($tag)
  36. {
  37. //Closing tag
  38. }
  39. ?>

prosze uzywac tagów php
aleksander
Go to the top of the page
+Quote Post
romek04
post 26.06.2008, 17:50:58
Post #5





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 26.06.2008

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


Zobacz tutaj:
http://www.scrapingsystems.com/

pozdrawiam
romek
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: 15.06.2025 - 16:14