Avatar billede ncp Nybegynder
11. marts 2003 - 00:07 Der er 9 kommentarer og
1 løsning

Fjern alle html-tags undtagen...

Hey, hvordan fjerner jeg alle html-tags undtagen <BR>, <STRONG>, </STRONG>, <EM>, </EM>, <U> og </U>

Håber nogle vil hjælpe...
Avatar billede ncp Nybegynder
11. marts 2003 - 00:08 #1
ps. det handler om tekst i en string...
Avatar billede eagleeye Praktikant
11. marts 2003 - 00:12 #2
Jeg har brugt denne function..:



Function RemoveHTML( strInputText )

  TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" &_
    "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" &_
    "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" &_
    "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" &_
    "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" &_
    "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" &_
    "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" &_
    "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;" 

  Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"
   
  Dim nPos1, nPos2, nPos3
  Dim strResult, strTagName, bRemove, bSearchForBlock
 
  Dim runNo, AttackLimit, strRef
 
  runNo = 1
  AttackLimit = 5
 
  strResult = strInputText
  do
    runNo = runNo + 1
    strRef = strResult
    strText = strRef
    strResult = ""
   
    nPos1 = InStr(strText, "<")
    Do While nPos1 > 0
      nPos2 = InStr(nPos1 + 1, strText, ">")
      If nPos2 > 0 Then
        strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
        strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
        nPos3 = InStr(strTagName, " ")
        If nPos3 > 0 Then
          strTagName = Left(strTagName, nPos3 - 1)
        End If
        If Left(strTagName, 1) = "/" Then
          strTagName = Mid(strTagName, 2)
          bSearchForBlock = False
        Else
          bSearchForBlock = True
        End If   
        If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
          bRemove = True
          If bSearchForBlock Then
            If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
              nPos2 = Len(strText)
              nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
              If nPos3 > 0 Then
                nPos3 = InStr(nPos3 + 1, strText, ">")
              End If
              If nPos3 > 0 Then
                nPos2 = nPos3
              End If
            End If
          End If
        Else
          bRemove = False
        End If
        If bRemove Then
          strResult = strResult & Left(strText, nPos1 - 1)
          strText = Mid(strText, nPos2 + 1)
        Else
          strResult = strResult & Left(strText, nPos1)
          strText = Mid(strText, nPos1 + 1)
        End If
      Else
        strResult = strResult & strText
        strText = ""
      End If
      nPos1 = InStr(strText, "<")
    Loop
    strResult = strResult & strText
 
  loop until (strRef = strResult) OR (runNo = AttackLimit)
 
  if (runNo >= AttackLimit) then
    strResult = "...text removed..."
  end if
  RemoveHTML = strResult
End Function



De tags du vil tillade fjerner du i  TAGLIST

Og du kan kalde den sådan her:

str = "en streng med html kode <b>fed?</b>"
Response.write RemoveHTML(str)
Avatar billede cozey Nybegynder
11. marts 2003 - 00:12 #3
Avatar billede loukas Mester
11. marts 2003 - 00:12 #4
Prøv at se her
der er en færdig kode til det:
http://www.eksperten.dk/spm/305755
Avatar billede loukas Mester
11. marts 2003 - 00:13 #5
lol, der sker noget her ;-)
Avatar billede eagleeye Praktikant
11. marts 2003 - 00:14 #6
Hvis du bare vi disable HTML koden så der stadig står i teksten med ikke virker som HTML kode kan du bruge Server.HTMLEncode, sog husk at ændre <br> til noget andet og så tilbage igen :)

str = "en streng med html kode <b>fed?</b>"
str = replace(str,"<br>",vbCrLf)
str = Server.HTMLencode(str)
str = replace(str,vbCrLf,"<br>")
response.write str
Avatar billede ncp Nybegynder
11. marts 2003 - 01:07 #7
Tror næsten den sidste du kom med eagleeye er den næmmeste... Det er fordi jeg har en Ms-Editor på min hjemmeside, hvor folk kan indsætte anmeldelser, men hvis de først skriver dem i word og derefter <ctrl>+<c> <ctrl>+<v> fucker word en hel masse unødig kode ind, hvilket bruget al min dejlige db-plads...

Jeg er desværre ret træt lige nu, men kigger på det imorgen - men det ser faktisk ret fikst ud ;)
Avatar billede ncp Nybegynder
11. marts 2003 - 13:49 #8
okay, den gjorde ikke lige som jeg havde forstillet mig... den laver var < om til &lt; osv...

Kigger på funktionen nu...
Avatar billede eagleeye Praktikant
12. marts 2003 - 01:34 #9
Ja som jeg skrev det sidste eks jeg har vist fjerne ikke HTML koden de deaktivere koden så det ikke virker som HTML kode. Hvis du vil havde HTML koden fjerne så det som i mit svar med en function som løber teksten igennem og fjerner alle HTML tags.
Avatar billede ncp Nybegynder
12. marts 2003 - 07:35 #10
Jep, og det var også den jeg endte med at bruge ;) - tak for hjælpen!

point går til eagleeye, for først svar...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester