145 votes

Utilisation d'expressions régulières en C# pour supprimer les balises HTML

Comment utiliser une expression régulière C# pour remplacer/supprimer toutes les balises HTML, y compris les crochets d'angle ? Quelqu'un peut-il m'aider avec le code ?

14voto

CountZero Points 789

J'aimerais me faire l'écho de la réponse de Jason, mais il faut parfois analyser naïvement du Html et en extraire le contenu textuel.

J'avais besoin de faire cela avec du Html qui avait été créé par un éditeur de texte riche, toujours du plaisir et des jeux.

Dans ce cas, vous devrez peut-être supprimer le contenu de certaines balises, ainsi que les balises elles-mêmes.

Dans mon cas, des étiquettes ont été ajoutées à ce mélange. Certains trouveront peut-être que ma mise en œuvre (très légèrement) moins naïve constitue un point de départ utile.

   /// <summary>
    /// Removes all html tags from string and leaves only plain text
    /// Removes content of <xml></xml> and <style></style> tags as aim to get text content not markup /meta data.
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string HtmlStrip(this string input)
    {
        input = Regex.Replace(input, "<style>(.|\n)*?</style>",string.Empty);
        input = Regex.Replace(input, @"<xml>(.|\n)*?</xml>", string.Empty); // remove all <xml></xml> tags and anything inbetween.  
        return Regex.Replace(input, @"<(.|\n)*?>", string.Empty); // remove any tags but not there content "<p>bob<span> johnson</span></p>" becomes "bob johnson"
    }

6voto

Owidat Points 430

Essayez la méthode des expressions régulières à cette URL : http://www.dotnetperls.com/remove-html-tags

/// <summary>
/// Remove HTML from string with Regex.
/// </summary>
public static string StripTagsRegex(string source)
{
return Regex.Replace(source, "<.*?>", string.Empty);
}

/// <summary>
/// Compiled regular expression for performance.
/// </summary>
static Regex _htmlRegex = new Regex("<.*?>", RegexOptions.Compiled);

/// <summary>
/// Remove HTML from string with compiled Regex.
/// </summary>
public static string StripTagsRegexCompiled(string source)
{
return _htmlRegex.Replace(source, string.Empty);
}

4voto

Swaroop Points 19

Utilisez ceci

@"(?></?\w+)(?>(?:[^>'""]+|'[^']*'|""[^""]*"")*)>"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X