2010-08-31 8 views
13

¿Existe un mejor enfoque para analizar un HTML no válido y luego aplicar Tidy en él?Mejor manera de analizar un HTML no válido en PHP

Nota al margen: Hay algunas situaciones en las que no puede tener Tidy disponible. Regexp tampoco se recomienda Entender para analizar HTML.

+2

En situaciones en las que no tiene Tidy disponible, debe instalarlo. O simplemente no puedes usar HTML roto en primer lugar. –

+2

¿Hablas en serio? Hay al menos un par de veces que no pude hacer esta mejor práctica: código html no válido de los clientes que necesitan que se analice, hosting compartido sin opción para instalar Tidy. – danidacar

+0

@daniphp: Dead serious. –

Respuesta

6

me gustaría probar algo como esto: http://php.net/manual/en/domdocument.loadhtml.php

Desde esa página:

La función analiza el código HTML contenida en la cadena fuente. A diferencia de cargar XML, HTML no tiene que estar bien formado para cargar. Esta función también se puede llamar estáticamente para cargar y crear un objeto DOMDocument.

+0

Parece que los objetos loadHTML tienen el mismo valor para ID en dos o más elementos (aunque probablemente esto provenga de libxml) – HorusKol

1

SimpleHTMLDOM es conocido por ser más indulgente que las funciones de DOM nativas de PHP.

+2

Alternativas de terceros sugeridas a [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) que realmente usan [DOM] (http://php.net/manual/en /book.dom.php) en lugar de Análisis de cadena: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/ zend.dom.html), [QueryPath] (http://querypath.org/) y [FluentDom] (http://www.fluentdom.org). – Gordon

+0

@Gordon esta vez fuiste demasiado rápido :) Él está buscando analizar HTML roto. –

+1

que todos los analizadores basados ​​en DOM deberían ser capaces de manejar bien cuando se usa [el módulo analizador de HTML de libxml] (http://xmlsoft.org/html/libxml-HTMLparser.html). – Gordon

Cuestiones relacionadas