Convertir entités html en caractère

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 994 fois - Téléchargée 29 fois

Contenu du snippet

Cette fonction prend en entrée un texte html et converti toutes les entités HTML (é) en leur caractère équivalent (é)

Source / Exemple :


'*****************************************************************************************
    'fonction pour transformer les entités html en caractères "normaux"
    Public Function replace_html_entities(ByVal e_txt As String) As String

        'cree un hashtable avec toutes les possibilités
        Dim NametoNum As New Hashtable
        NametoNum.Add(""", "34")
        NametoNum.Add("'", "39")
        NametoNum.Add("&", "38")
        NametoNum.Add("<", "60")
        NametoNum.Add(">", "62")
        NametoNum.Add("&nbsp;", "160")
        NametoNum.Add("¡", "161")
        NametoNum.Add("¤", "164")
        NametoNum.Add("¢", "162")
        NametoNum.Add("£", "163")
        NametoNum.Add("¥", "165")
        NametoNum.Add("¦", "166")
        NametoNum.Add("§", "167")
        NametoNum.Add("¨", "168")
        NametoNum.Add("©", "169")
        NametoNum.Add("ª", "170")
        NametoNum.Add("«", "171")
        NametoNum.Add("¬", "172")
        NametoNum.Add("­", "173")
        NametoNum.Add("®", "174")
        NametoNum.Add("&trade;", "8482")
        NametoNum.Add("¯", "175")
        NametoNum.Add("°", "176")
        NametoNum.Add("±", "177")
        NametoNum.Add("²", "178")
        NametoNum.Add("³", "179")
        NametoNum.Add("´", "180")
        NametoNum.Add("µ", "181")
        NametoNum.Add("¶", "182")
        NametoNum.Add("·", "183")
        NametoNum.Add("¸", "184")
        NametoNum.Add("¹", "185")
        NametoNum.Add("º", "186")
        NametoNum.Add("»", "187")
        NametoNum.Add("¼", "188")
        NametoNum.Add("½", "189")
        NametoNum.Add("¾", "190")
        NametoNum.Add("¿", "191")
        NametoNum.Add("×", "215")
        NametoNum.Add("÷", "247")
        NametoNum.Add("À", "192")
        NametoNum.Add("Á", "193")
        NametoNum.Add("Â", "194")
        NametoNum.Add("Ã", "195")
        NametoNum.Add("Ä", "196")
        NametoNum.Add("Å", "197")
        NametoNum.Add("Æ", "198")
        NametoNum.Add("Ç", "199")
        NametoNum.Add("È", "200")
        NametoNum.Add("É", "201")
        NametoNum.Add("Ê", "202")
        NametoNum.Add("Ë", "203")
        NametoNum.Add("Ì", "204")
        NametoNum.Add("Í", "205")
        NametoNum.Add("Î", "206")
        NametoNum.Add("Ï", "207")
        NametoNum.Add("Ð", "208")
        NametoNum.Add("Ñ", "209")
        NametoNum.Add("Ò", "210")
        NametoNum.Add("Ó", "211")
        NametoNum.Add("Ô", "212")
        NametoNum.Add("Õ", "213")
        NametoNum.Add("Ö", "214")
        NametoNum.Add("Ø", "216")
        NametoNum.Add("Ù", "217")
        NametoNum.Add("Ú", "218")
        NametoNum.Add("Û", "219")
        NametoNum.Add("Ü", "220")
        NametoNum.Add("Ý", "221")
        NametoNum.Add("Þ", "222")
        NametoNum.Add("ß", "223")
        NametoNum.Add("à", "224")
        NametoNum.Add("á", "225")
        NametoNum.Add("â", "226")
        NametoNum.Add("ã", "227")
        NametoNum.Add("ä", "228")
        NametoNum.Add("å", "229")
        NametoNum.Add("æ", "230")
        NametoNum.Add("ç", "231")
        NametoNum.Add("è", "232")
        NametoNum.Add("é", "233")
        NametoNum.Add("ê", "234")
        NametoNum.Add("ë", "235")
        NametoNum.Add("ì", "236")
        NametoNum.Add("í", "237")
        NametoNum.Add("î", "238")
        NametoNum.Add("ï", "239")
        NametoNum.Add("ð", "240")
        NametoNum.Add("ñ", "241")
        NametoNum.Add("ò", "242")
        NametoNum.Add("ó", "243")
        NametoNum.Add("ô", "244")
        NametoNum.Add("õ", "245")
        NametoNum.Add("ö", "246")
        NametoNum.Add("ø", "248")
        NametoNum.Add("ù", "249")
        NametoNum.Add("ú", "250")
        NametoNum.Add("û", "251")
        NametoNum.Add("ü", "252")
        NametoNum.Add("ý", "253")
        NametoNum.Add("þ", "254")
        NametoNum.Add("ÿ", "255")
        NametoNum.Add("&OElig;", "338")
        NametoNum.Add("&oelig;", "339")
        NametoNum.Add("&Scaron;", "352")
        NametoNum.Add("&scaron;", "353")
        NametoNum.Add("&Yuml;", "376")
        NametoNum.Add("&circ;", "710")
        NametoNum.Add("&tilde;", "732")
        NametoNum.Add("&ensp;", "8194")
        NametoNum.Add("&emsp;", "8195")
        NametoNum.Add("&thinsp;", "8201")
        NametoNum.Add("&zwnj;", "8204")
        NametoNum.Add("&zwj;", "8205")
        NametoNum.Add("&lrm;", "8206")
        NametoNum.Add("&rlm;", "8207")
        NametoNum.Add("&ndash;", "8211")
        NametoNum.Add("&mdash;", "8212")
        NametoNum.Add("&lsquo;", "8216")
        NametoNum.Add("&rsquo;", "8217")
        NametoNum.Add("&sbquo;", "8218")
        NametoNum.Add("&ldquo;", "8220")
        NametoNum.Add("&rdquo;", "8221")
        NametoNum.Add("&bdquo;", "8222")
        NametoNum.Add("&dagger;", "8224")
        NametoNum.Add("&Dagger;", "8225")
        NametoNum.Add("&hellip;", "8230")
        NametoNum.Add("&permil;", "8240")
        NametoNum.Add("&lsaquo;", "8249")
        NametoNum.Add("&rsaquo;", "8250")
        NametoNum.Add("€", "8364")

        'recherche les entités via une expression réguliere
        Dim myregexp As New Regex("&[a-zA-Z0-9]{2,6}\;", RegexOptions.IgnoreCase)
        If myregexp.IsMatch(e_txt) Then
            Dim elt As Match
            For Each elt In myregexp.Matches(e_txt)
                'remplace l'occurence par la valeur associée
                e_txt = Replace(e_txt, elt.Value, Chr(NametoNum(elt.Value)))
            Next
        End If

        Return e_txt

    End Function

A voir également

Ajouter un commentaire Commentaires
Messages postés
296
Date d'inscription
lundi 2 septembre 2002
Statut
Membre
Dernière intervention
28 janvier 2008

Quelle courage pour tout saisir... Merci du kdo :o)
Messages postés
506
Date d'inscription
vendredi 30 juillet 2004
Statut
Membre
Dernière intervention
3 mars 2008
2
c clair mais g la flemme :)

ebn gros ca donnerait ca (remplacer que la partie du bas)
____________________________________________________________________
dim elt as dictionnaryentry
for each elt in NametoNum
e_txt = e_txt.replace(chr(elt.value), elt.key)
next
return e_txt
____________________________________________________________________

Mais c largement moins optimisé qu'avec les regexp !
Messages postés
167
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
18 novembre 2007
1
Ca serait pas mal de faire une fonction qui permet l'inverse é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.