2010-04-24 20 views
7

Sto cercando di analizzare il linguaggio HTML che non è sul mio serverPHP parsing html non valido

$dom = new DOMDocument(); 
    $dom->loadHTMLfile("http://www.some-site.org/page.aspx");  
    echo $dom->getElementById('his_id')->item(0); 

ma php restituisce un qualcosa di errore come ID his_id already defined in http://www.some-site.org/page.aspx, line: 33. Penso che sia perché DOMDocument si occupa di html non valido. Quindi, come posso analizzarlo anche se non è valido?

risposta

6

È necessario eseguire HTML Tidy su di esso per pulirlo prima di analizzarlo.

$html = file_get_contents('http://www.some-site.org/page.aspx'); 
$config = array(
    'clean' => 'yes', 
    'output-html' => 'yes', 
); 
$tidy = tidy_parse_string($html, $config, 'utf8'); 
$tidy->cleanRepair(); 
$dom = new DOMDocument; 
$dom->loadHTML($tidy); 

Vedere questo list of options.

+0

ordinata non è disponibile per me :( – kmunky

+0

@kmunky perché non Senza Tidy sei SOL, in fondo – cletus

+0

io davvero non lo so perché, contatterò il mio provider di hosting ... – kmunky

0

Leggendo i documenti, vedo un $dom->strictErrorChecking che per impostazione predefinita è TRUE. Cosa succede se imposti $dom->strictErrorChecking = false?

+0

ancora lo stesso problema – kmunky

+0

Sto avendo lo stesso problema. una saluta? –

1

Dai un'occhiata alla:?. Libxml_use_internal_errors()

http://php.net/libxml_use_internal_errors

+0

Se si sta solo andando a raccomandare un collegamento, si prega di farlo come un commento sotto la domanda invece di pubblicare come risposta. – mickmackusa