Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z odczytaniem pliku HTML.
Forum PHP.pl > Forum > PHP
kaapa
Witam!
Potrzebuję odczytać plik html podobnie jak xml(najlepiej przez simplexml, chociaż domem też nie pogardzę). Chodzi o to że strona nie ma odpowiedniej struktury i dlatego plik nie może zostać załadowany ani przez dom ani przez simplexml. Wyrzuca mniej więcej takie błędy
  1. <?php
  2. Warning: simplexml_load_file() [function.simplexml-load-file]: test.html:34: parser error : Opening and ending tag mismatch: link line 14 and head in D:xampphtdocssygnaturka&#092;test.php on line 2
  3.  
  4. Warning: simplexml_load_file() [function.simplexml-load-file]: </head> in D:xampphtdocssygnaturka&#092;test.php on line 2
  5. ?>


Oczywiście dane mogę odczytać przez explode, ale to strasznie ograniczy wydajność skryptu. Czy można jakoś ominąć dokładne sprawdzanie struktury dokumentu?
Proszę o pomoc.
Pozdrawiam,
Kacper.
artur81
próbowałeś file_get_contents" title="Zobacz w manualu PHP" target="_manual ?
kaapa
Tak samo, jakieś inne pomysły ? biggrin.gif
Lejto
pochwalisz się kodem? może tam coś nie gra, albo ścieżki masz nie te
kaapa
Ścieżka jest na 100% dobra, kwestia jest tego że strona jest zbudowana nie zgodnie ze standardami xml. Jest jakaś funkcja która przeleci mi ciąg i podomyka znaczniki itd ?
Kod
  1. <?php
  2. $file = file_get_contents('test.html');
  3. $dom = new DOMDocument();
  4. $dom->loadXML($file);
  5. ?>

Zwykłe wczytanie nic więcej ;/
Lejto
a po co file_get_contents? może nie masz biblioteki DOM
info: http://pl.php.net/dom
kaapa
Wczytałem bezpośrednio domem no i znowu error, widze że chyba explode to jedyne rozwiązanie.
[php][/php]Warning: DOMDocument::loadXML() [function.DOMDocument-loadXML]: Start tag expected, '<' not found in Entity, line: 1
Lejto
a zobacz z error_reporting(0); tongue.gif, ale chyba to nic nie da
l0ud
Nie da się przetworzyć niepoprawnego kodu XML. Dlaczego przeglądarki nie potrafią wyświetlić strony w XHTML1.1 gdy ta zawiera nawet jeden, drobny błąd?

kaapa, pozostaje Ci użyć do tego wyrażeń regularnych. Wydajnością bym się nie martwił - i tak 99% czasu wykonywania skryptu zajmie ściąganie tego pliku...
kaapa
A zadam jeszcze jedno pytanie, może troszke mały ot będzie ;p Czy wyrażenia regularne są dużo wydajniejsze od funkcji explode ?
dadexix
zależy co chcesz robić, na jaki duzym stringu...
Czasem lepiej to czasem to, zresztą całkiem nie rozumiem ponieważ wyrażenia regularne mogą się dopasować a explode - nie...
ucho
Spróbuj http://simplehtmldom.sourceforge.net/ - nie ma problemów z parsowaniem błędnego kodu, i można bardzo wygodnie wyszukiwać elementy po atrybutach, klasach czy normalnie po id zaś całość to tylko jeden plik.
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.