2010-08-31 4 views
13

Existe-t-il une meilleure approche pour analyser un code HTML invalide, puis appliquer Tidy?Meilleure façon d'analyser un code HTML invalide dans PHP

Côté Remarque: Dans certains cas, Tidy n'est pas disponible. Regexp est également déconseillé Je l'ai compris pour analyser le HTML.

+2

Dans les situations où Tidy n'est pas disponible, vous devez l'installer. Ou vous pourriez simplement ne pas utiliser le HTML cassé en premier lieu. –

+2

Êtes-vous sérieux? Il ya au moins quelques fois que j'ai été incapable de faire cette meilleure pratique: code html invalide des clients qui ont besoin d'être analysé, hébergement partagé sans option pour installer Tidy .. – danidacar

+0

@daniphp: Dead grave. –

Répondre

6

Je voudrais essayer quelque chose comme ceci: http://php.net/manual/en/domdocument.loadhtml.php

A partir de cette page:

La fonction parse le code HTML contenu dans la chaîne source. Contrairement au chargement XML, HTML n'a pas besoin d'être bien formé pour charger. Cette fonction peut également être appelée statiquement pour charger et créer un objet DOMDocument.

+0

il semble que les objets loadHTML ont la même valeur pour l'ID sur deux ou plusieurs éléments (bien que cela provienne probablement de libxml) – HorusKol

1

SimpleHTMLDOM est connu pour être plus clément que les fonctions DOM natives de PHP.

+2

Suggestions d'alternatives tierces à [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) qui utilisent réellement [DOM] (http://php.net/manual/en /book.dom.php) au lieu de l'analyse des chaînes: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/fr/ zend.dom.html), [QueryPath] (http://querypath.org/) et [FluentDom] (http://www.fluentdom.org). – Gordon

+0

@Gordon cette fois vous étiez trop rapide :) Il cherche à analyser HTML cassé. –

+1

que tous les analyseurs basés sur DOM devraient être capables de gérer correctement lorsqu'ils utilisent [le module d'analyse syntaxique HTML de libxml] (http://xmlsoft.org/html/libxml-HTMLparser.html). – Gordon

Questions connexes