Parsear HTML con PHP
Para obtener datos de un HTML, en vez de hacerlo con expresiones regulares, hacerlo mediante DOMDocument:
$oldSetting = libxml_use_internal_errors( true );
libxml_clear_errors();
$html = new DOMDocument();
$html->loadHtmlFile( $url );
$xpath = new DOMXPath( $html );
$links = $xpath->query( '//a' );
foreach ( $links as $link ) {
echo $link->getAttribute( 'href' ), "\n";
}
libxml_clear_errors();
libxml_use_internal_errors( $oldSetting );
Se utiliza libxml_use_internal_errors para evitar HTML mal formados
Me pregunto si para obtener tan solo un dato del HTML (title por ejemplo) es mejor el DOM o las expresiones regulares.
Algunas veces, cuando desarrollo un script para incluir en Sentido Web, me encuentro con el problemilla de que sólo funciona para PHP 5, cuando aquà tenemos instalado el 4 para evitar problemas de compatibilidad. Esta situación seguro que os a aparecido a vosotros. Si no estáis seguros de qué versión usar o qué problemas os podéis encontrar, nada mejor que leer el siguiente artÃculo.
