begin process at 2012 02 13 03:22:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Texte

 > FONCTION POUR RETIRER LES BALISES HTML DANS UN STRING !

FONCTION POUR RETIRER LES BALISES HTML DANS UN STRING !


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Texte Source .NET ( DotNet ) Classé sous :html2text, htmltotext, html2plaintext, htmltoplaintext, conversion Niveau :Débutant Date de création :15/02/2006 Vu / téléchargé :15 570 / 329

Auteur : drtissot

Ecrire un message privé
Site perso
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 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

  • 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
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 !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CLASSE EAN13 VERS BITMAP

 Sources de la même categorie

Source avec Zip Source avec une capture MASQUE DE SAISIE NUMÉRIQUE par acive
Source avec Zip Source .NET (Dotnet) COMPTEUR DE NOMBRE DE MOTS DANS UN TEXTE par alpha5
Source avec Zip Source avec une capture HM - BLOCNOTE par hassenmajor
Source .NET (Dotnet) [VB.NET] CLASS DE COLORATION SYNTAXIQUE "ON THE FLY" par huzima
Source avec Zip Source avec une capture PERSONNALISEZ VOS BOÎTES DE MESSAGE (X)HTML par medjahedScript

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7
Source avec Zip Source .NET (Dotnet) CONVERTIR UN CHIFFRE EN LETTRE par badis1043
Source avec Zip Source avec une capture TRADUCTEUR VB6.VBP EN VB5.VBP par joro

Commentaires et avis

Commentaire de loke le 15/02/2006 12:18:40

tu peux aussi utiliser la méthode tout aussi rapide qui est: string.replace(valeur_a_remplacer , nouvelle_valeur)

Commentaire de LogOff le 15/02/2006 12:36:03

Une question bête : on peut pas faire plus simplement ?

Sub main()
    
    Dim strBalises As String
    Dim strText As String
    
    strBalises = "span;table;font;div;a"
    strText = "<a href='http://www.vbfrance.com'>salut</a>"
    
    MsgBox Clean(strBalises, strText)

End Sub

Function Clean(strBalises As String, ByVal strText As String) As String

    Dim tablBalises() As String
    strBalises = LCase(strBalises)
    tablBalises() = Split(strBalises, ";")

    Dim pos1 As Integer
    Dim pos2 As Integer
    Dim pos3 As Integer

    Dim i As Integer
    For i = 0 To UBound(tablBalises())
      pos1 = InStr(1, strText, "<")
      If pos1 <> 0 Then
        pos2 = InStr(pos1, strText, " ")
        
        If pos2 = 0 Then
          ' c'est une balise sans argument, du genre "<br>"
          strText = Replace(strText, "</" & tablBalises(i) & ">", "")
        Else
          ' c'est une balise avec argument(s), du genre "<span style=...>"
          If LCase(Mid(strText, pos1, pos2 - pos1)) = "<" & tablBalises(i) Then
            pos3 = InStr(pos1, strText, ">")
            If pos3 <> 0 Then
              strText = Replace(strText, Mid(strText, pos1, pos3 - pos1 + 1), "")
            End If
          End If
        End If
      End If
      
      strText = Replace(strText, "</" & tablBalises(i) & ">", "")
    Next i
    
    Clean = strText
End Function


C'est plus court et on se prend moins la tête à taper une ligne de coe pour chaque balise qu'on veut supprimer. Pour le convertir en vb.net ça ne doit pas être difficile, il y a 3 instructions qui changent : for...next, replace() et mid().

Voilà, c'est juste à titre indicatif, bien sûr. Sinon, je ne connais pas la différence entre les fins de balises HTML et XML.

Commentaire de schtroumf le 15/02/2006 19:46:47

Bon j'ai une autre solution beaucoup plus bourrin mais je pense que ça peut aider ceux qui voudrait le faire à l'aide des expressions régulières.
NB: il faut ajouter une référence au composant Microsoft VBScript regular expression 5.5 (ou un truc du genre)

Function TestRegExp(myPattern As String, myString As String)
   'Création des objets
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String

   ' Création de l'objet expression régulière
   Set objRegExp = New RegExp

   'On défini le pattern
   objRegExp.Pattern = myPattern

   'On ignore la case
   objRegExp.IgnoreCase = True

   'Applicabilité globale
   objRegExp.Global = True

   'On regarde si le pattern est au moins présent une fois
   If (objRegExp.Test(myString) = True) Then

   'On récupère les résultats
    Set colMatches = objRegExp.Execute(myString)   ' Execute la recherhce

    For Each objMatch In colMatches   ' On parcours les éléments de la collection
      RetStr = RetStr & Mid(objMatch.Value, 2, objMatch.Length - 2) 'on retire les > en début de chaine et les < en fin de chaine
    Next
    
   Else
   ' L'expression n'était pas présente dans la chaine
    RetStr = "String Matching Failed"
   End If
  
   'On retourne la chaine débarrassée de ses balises
   TestRegExp = RetStr
End Function


Private Sub Form_Load()
    Dim MonString As String
    Dim MonPattern As String
    Dim Result As String
    
    MonString = "<html><head><title>test</title><body bgcolor=green><br>coucou<br><br>FIN</body>"
    MonPattern = ">.*?<" 'On recherche toutes les expressions comprises entre '>' et '<'
    
    MonString = Replace(MonString, "<br>", "@@@@") 'On remplace les <br> pour pas les perdre
    Result = TestRegExp(MonPattern, MonString) 'On supprime les balises
    Result = Replace(Result, "@@@@", vbCrLf) ' on remet des saut de ligne
    MsgBox Result
End Sub

Commentaire de schtroumf le 15/02/2006 20:12:10

Bon allez juste une dernière avec les expressions régulières (qui était déjà sur VBfrance mais qui marchait pas vraiment). il faut toujours ajouter une référence au composant Microsoft VBScript regular expression 5.5

Public Function SupprimeHTML(chaine As String)
    Dim regExp As regExp
    Set regExp = New regExp
    regExp.Pattern = "<(.*)>"   ' Définition de la balise HTML
    regExp.Global = True        ' On traite toute la chaine
    SupprimeHTML = regExp.Replace(chaine, "")
End Function

Par contre ça gère pas les <br> :( mais c'est court :)

Commentaire de Stephane33 le 20/02/2006 20:30:07 administrateur CS

question à 2 balles quand une balise commence à une ligne et fini sur une autre
du style
<td bgcolor='#0F0F0F'
valign ='left'>
Normalement une page bien conçue ne devrait pas présenter ce type de problèmes, mais quand ce sont de pages html générées dynamiquement (php ou asp) la mise en page c'est pas forcement ça...

Commentaire de schtroumf le 20/02/2006 21:36:29

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

Commentaire de Stephane33 le 20/02/2006 21:41:41 administrateur CS

Ok mais les données sont lues via un streamreader, donc par ligne du fichier

Commentaire de LogOff le 20/02/2006 21:52:07

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.

Commentaire de hvb le 15/03/2006 16:25:42

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

Commentaire de lassad_haddaji le 07/01/2009 13:47:13

salut,
est ce que on peut convertir de texte vers html??
s'il y a de réponse merci de me répondre.
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Conversion image couleur en noir et blanc [ par merlin ] Je cherche a convertir l'image d'un picturebox en couleurs vers une image monochrome, pour ensuite la mettre dans le clipboard (prend moins de place). Aide pour conversion de code Basic - C++ !! [ par Ral ] Salut à tous.N'ayant pas de compétence en "Basic",Je recherche quelqu'un qui s'y connait bien en "Basic"(sur Turbo-Basic ou Quick-Basic) et C++ ,et qu Conversion Word -> HTML [ par Thermosam ] Il me faudrait les sources d'un programme qui à partir d'un fichier Word génère un fichier correspondant en HTML (avec tous les TAGS). Conversion .txt dos windows [ par Olli ] Bonjour à tous,je cherche à convertir un fichier texte dos sous windows.Comment faire, j'ai essayé les macros de word 2000, ca marche sous word, mais Conversion Base10 -> Base16 [ par S¢ren ] Bonjour à tous,Qlq connait-il un algorythme permettant de transformer un nombre en base dix en un hexa ?Bien entendu, je cherche à éviter la fonction Conversion de date [ par nico ] Je souhaite convertir une date au format ss/aaaa en format jj/mm/aaaa.Exemple : la date 35/0000 correspond au 28/08/2000Merci d'avance Conversion VB3 -> VB6 [ par Sandro ] Bonjour,Est-ce que quelqu'un connait un programme qui convertit de vieux sources VB3 en VB6 (C'est surtout les références aux VBX qui posent des probl Conversion Excel -> HTML [ par Spag ] Aaargh mais comment diable puis-je convertir un fichier excel au format HTML depuis VB et ASP ??Merci à celui qui a la réponse! :) Conversion chaine de caracteres en un nombre entier [ par tntdavid ] Je voudrais connaitre le code VB d'une fonction qui me permettrait de convertir une chaine de 6 caractères en un nombre entier.Merci d'avance de l'att


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,179 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales