Fonction pour retirer les balises html dans un string !

Description

Cette class enferme une petite fonction que j'utilise pour retirer tous les tags HTML dans un string.
Avec un minimum d'adaptation, elle devrait aussi supprimer les TAGS XML.
Pratique dans une trousse à outils !

Source / Exemple :


Public Class Html2PlainTextClass
    ' DrTissot 15/02/2006 
    ' http://www.codes-sources.com/auteurdetail.aspx?ID=189274
    ' Fonction permettant de nettoyer un string comportant des tags de type HTML

    ' EXEMPLE D'UTILISATION DANS UN FORMULAIRE 
    ' Html2PlainTextClass.Clean(TextBox1.Text)

    Public Shared Sub Clean(ByRef s As String)
        ' Ajouter vos propres balises ici HTML (ou XML)
        CleanTagHTML(s, "span")
        CleanTagHTML(s, "br", vbCrLf) 'Ex: les "br" seront remplacés par des retours chariot
        CleanTagHTML(s, "li", vbCrLf)
        CleanTagHTML(s, "table")
        CleanTagHTML(s, "script")
        CleanTagHTML(s, "font")
        CleanTagHTML(s, "div")
        CleanTagHTML(s, "td")
        CleanTagHTML(s, "tr")
        CleanTagHTML(s, "head")
        CleanTagHTML(s, "html")
        CleanTagHTML(s, "ul")
    End Sub
    Private Shared Sub CleanTagHTML(ByRef s As String, ByVal _tag As String, Optional ByVal _replaceString As String = "")
        Dim boolStillContinu As Boolean = False
        Do
            boolStillContinu = False
            ' Balises ouverture
            If InStr(s, "<" & _tag) > 0 Then
                boolStillContinu = True
                s = s.Replace(s.Substring(InStr(LCase(s), "<" & _tag) - 1, InStr((InStr(LCase(s), "<" & _tag) + 1), s, ">") - InStr(LCase(s), "<" & _tag) + 1), _replaceString)
            End If
            ' Balises fermeture
            If InStr(s, "</" & _tag) > 0 Then
                boolStillContinu = True
                s = s.Replace(s.Substring(InStr(LCase(s), "</" & _tag) - 1, InStr((InStr(LCase(s), "</" & _tag) + 1), s, ">") - InStr(LCase(s), "</" & _tag) + 1), String.Empty)
            End If
            ' Balises fermeture XHTML
            If InStr(s, "</ " & _tag) > 0 Then
                boolStillContinu = True
                s = s.Replace(s.Substring(InStr(LCase(s), "</ " & _tag) - 1, InStr((InStr(LCase(s), "</ " & _tag) + 1), s, ">") - InStr(LCase(s), "</ " & _tag) + 1), String.Empty)
            End If
            ' Sortie
            If Not boolStillContinu Then Exit Do
        Loop
    End Sub
End Class

Conclusion :


1) Enregister ce code dans un fichier .vb (ex: Html2PlainTextClass.vb)
2) Placer ce fichier VB dans votre projet (VB.NET ou ASP.NET)
3) C'est prêt !

Exemple pour nettoyer un textbox qui contient des tags HTML: Html2PlainTextClass.Clean(TextBox1.Text)

Facile !

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.