Discussion:
script de detection de code html mal equilibre en php ?
(trop ancien pour répondre)
michel
2009-09-15 09:31:00 UTC
Permalink
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.

A bientôt,
Olivier Miakinen
2009-09-15 10:06:24 UTC
Permalink
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,
- balise de fermeture manquante
<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
2009-09-15 12:43:54 UTC
Permalink
Post by Olivier Miakinen
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
2009-09-15 14:30:20 UTC
Permalink
Post by Olivier Miakinen
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/>
Post by Olivier Miakinen
/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.

Continuer la lecture sur narkive:
Loading...