2010-04-24 11 views
7

Estoy tratando de analizar algo de HTML que no está en mi servidorPHP análisis de HTML no válido

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

pero php devuelve un error como algo ID his_id already defined in http://www.some-site.org/page.aspx, line: 33. Creo que es porque DOMDocument está tratando con html no válido. Entonces, ¿cómo puedo analizarlo aunque no sea válido?

Respuesta

6

Debe ejecutar HTML Tidy en él para limpiarlo antes de analizarlo.

$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); 

Ver esto list of options.

+0

ordenada no está disponible para mí :( – kmunky

+0

@kmunky por qué no Tidy Sin usted es SOL, básicamente – cletus

+0

realmente no sé por eso, me pondré en contacto con mi proveedor de alojamiento ... – kmunky

0

lectura de la documentación, veo un $dom->strictErrorChecking que los valores por defecto en TRUE. ¿Qué ocurre si se establece $dom->strictErrorChecking = false?

+0

todavía mismo problema – kmunky

+0

estoy teniendo el mismo problema. ¿existe ya una salutación? –