Comment parser du HTML de facon linéaire ?

Signaler
Messages postés
55
Date d'inscription
vendredi 7 septembre 2007
Statut
Membre
Dernière intervention
16 mai 2013
-
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
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
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -