script de detection de code html mal equilibre en php ?
3 réponses
michel
Bonjour,
Bein que pratiquant les expressions régulière set ayant largement
exploré sur ce sujet, je ne vois pas de pistes pour une fonction qui
indiquerait si un une chaine html a des défauts d'équilibrage ou pas,
du genre :
- balise de fermeture manquante
- mauvais équilibrage (balises de fermeture dans le mauvais ordre :
<b><i>texte</b></i> au lieu de <b><i>texte</i></b>
- balise non terminée<div au lieu de <div>
Si quelqu'un a déjà vu quelque chose du genre, et si je trouve le
premier je l'indiquerai ici.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
Le 15/09/2009 11:31, michel a écrit :
Bien que pratiquant les expressions régulières et ayant largement exploré sur ce sujet, je ne vois pas de pistes pour une fonction qui indiquerait si une chaine html a des défauts d'équilibrage ou pas, du genre :
- balise de fermeture manquante
- mauvais équilibrage (balises de fermeture dans le mauvais ordre : <b><i>texte</b></i> au lieu de <b><i>texte</i></b>
- balise non terminée<div au lieu de <div>
Je trouve normal que tu ne voies pas de pistes utilisant les expressions rationnelles, tout simplement parce que la structure d'un document HTML est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle, ni ouvrante ni fermante, et que les guillemets sont obligatoires autour de tous les attributs, mais c'est encore pire pour le HTML.
Si quelqu'un a déjà vu quelque chose du genre, et si je trouve le premier je l'indiquerai ici.
Pour du XHTML, tu peux utiliser les fonctions de manipulation de XML : <http://www.php.net/manual/fr/refs.xml.php>.
Quant au HTML, voir par exemple ici et suivre les liens : <http://www.balluche.fr/?527/Un-parseur-de-HTML-en-PHP>.
Cela dit, si ton seul souci est de vérifier la syntaxe de tes pages, tu n'as pas forcément besoin de le faire en PHP. Validateur du W3C : <http://validator.w3.org/>. Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Cordialement, -- Olivier Miakinen
Le 15/09/2009 11:31, michel a écrit :
Bien que pratiquant les expressions régulières et ayant largement
exploré sur ce sujet, je ne vois pas de pistes pour une fonction qui
indiquerait si une chaine html a des défauts d'équilibrage ou pas,
du genre :
- balise de fermeture manquante
- mauvais équilibrage (balises de fermeture dans le mauvais ordre :
<b><i>texte</b></i> au lieu de <b><i>texte</i></b>
- balise non terminée<div au lieu de <div>
Je trouve normal que tu ne voies pas de pistes utilisant les expressions
rationnelles, tout simplement parce que la structure d'un document HTML
est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est
déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle,
ni ouvrante ni fermante, et que les guillemets sont obligatoires autour
de tous les attributs, mais c'est encore pire pour le HTML.
Si quelqu'un a déjà vu quelque chose du genre, et si je trouve le
premier je l'indiquerai ici.
Pour du XHTML, tu peux utiliser les fonctions de manipulation de XML :
<http://www.php.net/manual/fr/refs.xml.php>.
Quant au HTML, voir par exemple ici et suivre les liens :
<http://www.balluche.fr/?527/Un-parseur-de-HTML-en-PHP>.
Cela dit, si ton seul souci est de vérifier la syntaxe de tes pages, tu
n'as pas forcément besoin de le faire en PHP.
Validateur du W3C : <http://validator.w3.org/>.
Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Bien que pratiquant les expressions régulières et ayant largement exploré sur ce sujet, je ne vois pas de pistes pour une fonction qui indiquerait si une chaine html a des défauts d'équilibrage ou pas, du genre :
- balise de fermeture manquante
- mauvais équilibrage (balises de fermeture dans le mauvais ordre : <b><i>texte</b></i> au lieu de <b><i>texte</i></b>
- balise non terminée<div au lieu de <div>
Je trouve normal que tu ne voies pas de pistes utilisant les expressions rationnelles, tout simplement parce que la structure d'un document HTML est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle, ni ouvrante ni fermante, et que les guillemets sont obligatoires autour de tous les attributs, mais c'est encore pire pour le HTML.
Si quelqu'un a déjà vu quelque chose du genre, et si je trouve le premier je l'indiquerai ici.
Pour du XHTML, tu peux utiliser les fonctions de manipulation de XML : <http://www.php.net/manual/fr/refs.xml.php>.
Quant au HTML, voir par exemple ici et suivre les liens : <http://www.balluche.fr/?527/Un-parseur-de-HTML-en-PHP>.
Cela dit, si ton seul souci est de vérifier la syntaxe de tes pages, tu n'as pas forcément besoin de le faire en PHP. Validateur du W3C : <http://validator.w3.org/>. Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Cordialement, -- Olivier Miakinen
Michael DENIS
Olivier Miakinen a écrit :
Validateur du W3C : <http://validator.w3.org/>. Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Pour une validation "off-line" moins gourmande en ressources et automatique, il y a aussi html validator :
http://users.skynet.be/mgueury/mozilla/
-- Michaël DENIS
Olivier Miakinen a écrit :
Validateur du W3C : <http://validator.w3.org/>.
Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Pour une validation "off-line" moins gourmande en ressources et
automatique, il y a aussi html validator :
Validateur du W3C : <http://validator.w3.org/>. Extension pour Gecko : <http://chrispederick.com/work/web-developer/>.
Pour une validation "off-line" moins gourmande en ressources et automatique, il y a aussi html validator :
http://users.skynet.be/mgueury/mozilla/
-- Michaël DENIS
Olivier Miakinen
Le 15/09/2009 12:06, je répondais à michel :
Je trouve normal que tu ne voies pas de pistes utilisant les expressions rationnelles, tout simplement parce que la structure d'un document HTML est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle, ni ouvrante ni fermante, et que les guillemets sont obligatoires autour de tous les attributs, mais c'est encore pire pour le HTML.
La preuve : <http://www.miakinen.net/tmp/valid.html> -------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- </html> </body> <p><b>machin<i>truc</b>chose</i> <div/> >/div< --> <title>Code bizarre mais valide</title> <!-- <body> </head> --> <p>Code bizarre mais valide <!-- <head> <html> --> --------------------------------------------------------------------
Et encore, je n'ai pas rajouté de structures imbriquées de dix mille div les uns dans les autres, ce qui rendrait le traitement par des expressions rationnelles encore plus difficile.
Le 15/09/2009 12:06, je répondais à michel :
Je trouve normal que tu ne voies pas de pistes utilisant les expressions
rationnelles, tout simplement parce que la structure d'un document HTML
est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est
déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle,
ni ouvrante ni fermante, et que les guillemets sont obligatoires autour
de tous les attributs, mais c'est encore pire pour le HTML.
La preuve :
<http://www.miakinen.net/tmp/valid.html>
--------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!--
</html>
</body>
<p><b>machin<i>truc</b>chose</i>
<div/>
>/div<
-->
<title>Code bizarre mais valide</title>
<!--
<body>
</head>
-->
<p>Code bizarre mais valide
<!--
<head>
<html>
-->
--------------------------------------------------------------------
Et encore, je n'ai pas rajouté de structures imbriquées de dix mille
div les uns dans les autres, ce qui rendrait le traitement par des
expressions rationnelles encore plus difficile.
Je trouve normal que tu ne voies pas de pistes utilisant les expressions rationnelles, tout simplement parce que la structure d'un document HTML est beaucoup plus complexe que ce que peuvent traiter les regexp ! C'est déjà vrai pour du XHTML, alors même qu'aucune balise n'est optionnelle, ni ouvrante ni fermante, et que les guillemets sont obligatoires autour de tous les attributs, mais c'est encore pire pour le HTML.
La preuve : <http://www.miakinen.net/tmp/valid.html> -------------------------------------------------------------------- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- </html> </body> <p><b>machin<i>truc</b>chose</i> <div/> >/div< --> <title>Code bizarre mais valide</title> <!-- <body> </head> --> <p>Code bizarre mais valide <!-- <head> <html> --> --------------------------------------------------------------------
Et encore, je n'ai pas rajouté de structures imbriquées de dix mille div les uns dans les autres, ce qui rendrait le traitement par des expressions rationnelles encore plus difficile.