J'ai utilisé CKEditor éditeur wysiwyg pour un site web où les utilisateurs sont autorisés à utiliser l'éditeur HTML pour ajouter des commentaires. J'ai fini par avoir un code HTML imbriqué extrêmement redondant dans ma base de données qui ralentit l'affichage et l'édition de ces commentaires.
J'ai des commentaires qui ressemblent à ceci (c'est un très petit exemple, j'ai des commentaires avec plus de 100 balises imbriquées) :
<p>
<strong>
<span style="font-size: 14px">
<span style="color: #006400">
<span style="font-size: 14px">
<span style="font-size: 16px">
<span style="color: #006400">
<span style="font-size: 14px">
<span style="font-size: 16px">
<span style="color: #006400">This is a </span>
</span>
</span>
</span>
</span>
</span>
</span>
<span style="color: #006400">
<span style="font-size: 16px">
<span style="color: #b22222">Test</span>
</span>
</span>
</span>
</span>
</strong>
</p>
Mes questions sont les suivantes :
-
Existe-t-il une bibliothèque, un code ou un logiciel capable d'effectuer un nettoyage intelligent (c'est-à-dire tenant compte du format) du code HTML, en supprimant toutes les balises redondantes qui n'ont aucun effet sur le formatage (car elles sont remplacées par des balises internes) ? J'ai essayé de nombreuses solutions en ligne existantes (telles que HTML Tidy ). Aucun d'entre eux ne fait ce que je veux.
-
Sinon, je devrai écrire du code pour l'analyse et le nettoyage du HTML. Je prévois d'utiliser PHP Simple HTML DOM pour parcourir l'arbre HTML et trouver toutes les balises qui n'ont aucun effet. Suggérez-vous un autre analyseur HTML qui conviendrait mieux à mon objectif ?
Merci
.
Mise à jour :
J'ai écrit un code pour analyser le code HTML que je possède. Toutes les balises HTML que j'ai sont :
-
<span>
avec des styles pourfont-size
et/oucolor
-
<font>
avec des attributscolor
et/ousize
-
<a>
pour les liens (avechref
) <strong>
-
<p>
(balise unique pour envelopper le commentaire entier) <u>
Je peux facilement écrire un code pour convertir le code HTML en bbcode (par ex. [b]
, [color=blue]
, [size=3]
etc). Ainsi, le HTML ci-dessus deviendra quelque chose comme :
[b][size=14][color=#006400][size=14][size=16][color=#006400]
[size=14][size=16][color=#006400]This is a [/color][/size]
[/size][/color][/size][/size][color=#006400][size=16]
[color=#b22222]Test[/color][/size][/color][/color][/size][/b]
La question maintenant est : Existe-t-il un moyen facile (algorithme/librairie/etc) de nettoyer le bbcode désordonné (aussi désordonné que le HTML original) qui sera généré ?
merci encore