Comment parser du HTML de facon linéaire ?

bluemandfr Messages postés 55 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 16 mai 2013 - 16 nov. 2009 à 00:40
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 16 nov. 2009 à 20:58
Bonjour à tous !

Je cherche une fonction qui me permettrait de parser du HTML contenu dans une variable $HMTL, et ce, de manière linéaire (pas d'arborescence), et plus précisément, que la fonction retourne un tableau à 2 dimensions avec pour chaque ligne i :

Result[i][0] : un booléen : true = indique que la ligne est une balise et false que la ligne est du texte hors balises.
Result[i][1] : une string valant soit une balise (exemple : ) ou le texte entre deux balises.

Attention :
- Cette fonction doit tenir comte que dans le texte, il peut y avoir des caractères < ou >
- Elle doit aussi parser du HTML contenant du Javascript.

Si vous savez comment réaliser cela, ou bien si vous connaissez une fonction écrite par quelqu'un, merci de me le faire savoir!

BlueMan.

2 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
16 nov. 2009 à 15:29
Bon c'est une idée pour une réflexion de départ, pas une solution :

<?php
for ($c = 0, $total=strlen($HTML); $c<$total; $c++)
{
// Si le caractère est un < on entre dans du html
if ($txt[$c]=="<")
$inhtml=true;
// Si t'est dans une balise et que tu croise un >, c'est la fin de la balise
if($inhtml && $txt[$c]==">")
$inhtml=false;
}
?>

Pour ce qui es de savoir si c'est un < de balise ou un < mis au hasard dans le texte c'est plus dur...
_________________________________
Min iPomme
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
16 nov. 2009 à 20:58
Salut,

Le mieux reste de créer une classe à grand coup de regex, sans cela il me parait difficile d'atteindre le but.
Il faut aussi bien définir ce que tu veux :
- parser ? ça veut tout et rien dire : quel est le but ?
- que souhaites tu parser : du HTML d'il y a 10 ans (comme l'exemple que tu cites) ou du XHTML Strict ?
- etc ...


Cordialement,


Kohntark -
0
Rejoignez-nous