Fonction pour retirer les balises html dans un string !

Soyez le premier à donner votre avis sur cette source.

Vue 19 842 fois - Téléchargée 393 fois

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

Ajouter un commentaire Commentaires
Messages postés
141
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
6 avril 2012

salut,
est ce que on peut convertir de texte vers html??
s'il y a de réponse merci de me répondre.
Merci
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
c'est pas tres complet, il manque des balises...
et en .net, prefere tastring.IndexOf à InStr, tastring.tolower à Lcase, etc...
C'est beaucoup plus lisible, portable entre differents languages .net et en plus c'est fashion tendance lol
Messages postés
69
Date d'inscription
dimanche 6 octobre 2002
Statut
Membre
Dernière intervention
14 juillet 2009

Oui le remplacement des balises peut se faire au moment de la lecture du fichier (ligne par ligne donc), mais on peut tout aussi bien stocker le contenu du fichier dans une variable et la traiter ensuite.
Messages postés
630
Date d'inscription
samedi 15 février 2003
Statut
Modérateur
Dernière intervention
9 octobre 2011
1
Ok mais les données sont lues via un streamreader, donc par ligne du fichier
Messages postés
59
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
22 juillet 2008

Normalement c'est pas un problème vu que le retour à la ligne est un caractère comme un autre
Afficher les 10 commentaires

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.