info:concrete5:59:codeclean

c5 clean copy-paste html code: éviter le code dégueulasse généré par word (ou autre)

voici du code typique généré par worddaube en faisant un copié-collé:

solution: passer par une phase intermédiaire, avec 3 fenêtres:

  • une word (openoffice - qui génère aussi un code assez sale) pour voir l'original
  • une éditeur vraiment simple (genre notepad): attention, un éditeur plus avancé (p. ex. VScodium aka Codium) va aussi embarquer du border, donc non
  • une firefox

1. Copier-coller de word dans l'éditeur simple

2. Couper-coller depuis l'éditeur simple vers firefox dans l'éditeur WYSIWYG d'un bloc contenu concretecms

normalement le code est propre, à vérifier

on utilise ensuite l'éditeur WYSIWYG de concretecms pour mettre en forme

Nettoyer le code

une fois que le messy code est là, on peut aussi nettoyer à la main si on en a le courage, sinon utiliser des outils:

/// <summary>
/// Removes all FONT and SPAN tags, and all Class and Style attributes.
/// Designed to get rid of non-standard Microsoft Word HTML tags.
/// </summary>
private string CleanHtml(string html)
{ 
    // start by completely removing all unwanted tags 
    html = Regex.Replace(html, @"<[/]?(font|span|xml|del|ins|[ovwxp]:\w+)[^>]*?>", "", RegexOptions.IgnoreCase); 
    // then run another pass over the html (twice), removing unwanted attributes 
    html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>","<$1$2>", RegexOptions.IgnoreCase); 
    html = Regex.Replace(html, @"<([^>]*)(?:class|lang|style|size|face|[ovwxp]:\w+)=(?:'[^']*'|""[^""]*""|[^>]+)([^>]*)>","<$1$2>", RegexOptions.IgnoreCase); 
    return html;
}

source: https://web.archive.org/web/20060128210548/http://tim.mackey.ie/CleanWordHTMLUsingRegularExpressions.aspx

  • info/concrete5/59/codeclean.txt
  • Dernière modification : 2025/09/19 04:53
  • de radeff