J'ai eu l'occasion de me plonger dans un code HTML qui doit dater d'il y a assez longtemps car je "remet à neuf" un vieux site.
Pour les curieux, le "code" est de ce genre. Il est sale, conçu pour les polices Windows (déclarées à chaque balise !), et lourd.
Mon script se charge donc de faire quelques regex là dessus (pas de DOM, ce machin n'est absolument pas compatible XML), et réussi à me sortir un résultat tel que celui-là, propre, clair, net, indenté, et sémantique (même les pseudo-listes à puces à base de "1. truc 2. machin" sont converties en belles listes !).
Le code en question n'est qu'une suite de regex. Malheureusement, il n'est adapté qu'au "codeur" qui a créé ce site (je soupçonne FrontPage de faire un truc pareil), et n'est adapté qu'au nettoyage de tables. C'est déjà suffisant, car les tables sont très difficiles à nettoyer "à la main" (comptez 30 minutes pour mon exemple, en le faisant bien).
Avec mon script, une simple ligne de commande vous sort le résultat :D : le script.
Il s'utilise tout simplement :
php converttables sourcefile.html destfile.html
sourcefile.html n'est pas modifié.
PS: Si vous êtes attentif, vous remarquerez que dans toute une partie du script, les tabulations sont remplacées par des "####". C'est simple : si je mets "\t" à la place, la regex ne fait rien ! Je ne sais pas où se situe le bug, mais c'est étrange.
# Et tidy ?
Posté par Rozé Étienne . Évalué à 5.
[^] # Re: Et tidy ?
Posté par steckdenis (site web personnel) . Évalué à 5.
Pour une utilisation 'normale', il semble être parfait, mais ici, c'est vraiment un gros décrassage, donc se débarrasser des [font], transformer de simples listes avec des '1. ceci 2. cela' en belles listes HTML, etc.
Merci quand-même, ça m'a fait découvrir un programme :) .
[^] # Re: Et tidy ?
Posté par fcartegnie . Évalué à 8.
# complexité
Posté par neologix . Évalué à 1.
[^] # Re: complexité
Posté par steckdenis (site web personnel) . Évalué à 3.
[td][span font='arial' font-size=12px][strong]machin
sur deux lignes[/strong]
[/span]
[/td]
Devient un très beau code de la sorte, réorganisé :
[td]
machin sur deux lignes
[/td]
En fait, la correction se fait en plusieurs étapes :
* Sauvegarde de quelques balises (les tr par exemple)
* Suppression de toutes les balises
* Suppression de tous les espaces et autres, ainsi que des saut de ligne. Ainsi, tout le code se présente sur une seule ligne : «[td]machin sur deux lignes[/td]» ici
* Indentation avec des regex un peu spéciaux, mais qui marchent
Le code à la sortie est donc tout beau et tout propre :) .
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.