Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:17 Der er 16 kommentarer og
1 løsning

Fjern html tags før response.write rs("feltnavn") ?

Hej alle kloge hoveder :o)

Hvordan fjerne jeg alle html tags fra en streng når jeg udskriver dem med min response.write ?

Problemet er at jeg ikke ønsker tags som f.eks <br> ved udskrivning da dette vil ødelægge mit layout i denne forbindelse. Dog skal tags'ene bruges andre steder, så jeg kan ikke bare fjerne dem fra db'en.

Har tænkt lidt på en server.htmlencode(streng) og så fjerne alle < og > samt det i mellem, men har ikke helt fundet ud af det.

Mit næste problem er så at gøre et bestemt "keyword" fed, men det er ikke så vigtigt.

Håber der er noget hjælp derude

mvh
Daniel
Avatar billede medions Nybegynder
25. oktober 2002 - 20:25 #1
skriver:

Response.Write(Replace(streng, "<br>",vbCrLf))

//>Rune
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:26 #2
okay... fandt en funktion der klarede det...
Hvis andre kan bruge det til noget så:

Function RegReplace(inStr)
  Dim regEx
  Set regEx = New RegExp
  regEx.Global = True
  regEx.IgnoreCase = True
  regEx.Pattern = "<[^>]+>"
  inStr=regEx.Replace(inStr, "")
  RegReplace=inStr
End Function

Når man så skal bruge den laver man bare en:

Response.Write Regreplace(rs("Feltnavn"))

Eller hvis man som jeg kun ønskede de første 150 tegn

Response.Write Regreplace(LEFT(rs("Feltnavn"), 150))
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:28 #3
Medions: din funktion erstatter kun <br> - <p>tekst</p> ødelægger også mit layout og derfor er den funktion jeg nævnte bedre. Men har du en ide om hvordan man highlighter et keyword eller gør det fed ?
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:30 #4
Det som jeg prøver at efterligne er et søgeresultat i stil min googles til min egen søgemaskine på min hjemmeside
Avatar billede medions Nybegynder
25. oktober 2002 - 20:30 #5
Det kommer an på i hvilken samhæng du vil ha' det highlighted! -Hvis vi siger du har noget tekst i en tabel, så går du bare alle ordne igennem i den db-tabel og ser om det matcher hvis det gør så highligt!

//>Rune
Avatar billede hells Nybegynder
25. oktober 2002 - 20:34 #6
er det ikke bare noget med:
Response.Write Replace(rs("Feltnavn"), soegeord, "<b>" & soegeord & "</b>")
Avatar billede medions Nybegynder
25. oktober 2002 - 20:35 #7
daniel_d> 2 sek, er lige ved at strikke noget sammen til dig..!

//>Rune
Avatar billede medions Nybegynder
25. oktober 2002 - 20:37 #8
Dette burde vidst være løsningen på dit problem:

<html>
<head>
    <title></title>
</head>
<body>

<%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)}DBQ=" & Server.MapPath("database/db1.mdb")
   
    strSQL = "SELECT * FROM tblSearch WHERE colArtikel LIKE %'" & strKeyWord & "%'"
    Set objRs = objConn.Execute(strSQL)
   
    While Not objRs.EOF
        arrWords = Split(objRs("colArtikel")," ")
        For i = 0 To Ubound
            If arrWords(i) = strKeyWord Then
                strString = strString & "<b>" & arrWords(i) & "</b>"
            Else
                strString = strString & arrWords(i)
            End If
        Next
        strTotalString = strTotalString & strString
    objRs.MoveNext()
    Wend
   
    Response.Write(strTotalString)
%>

</body>
</html>

//>Rune
Avatar billede medions Nybegynder
25. oktober 2002 - 20:40 #9
Damn undskyld, glemte at definere hvilken Array der skulle kørers UBound() på ;o)

<html>
<head>
    <title></title>
</head>
<body>

<%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open "Driver={Microsoft Access Driver (*.mdb)}DBQ=" & Server.MapPath("database/db1.mdb")
   
    strSQL = "SELECT * FROM tblSearch WHERE colArtikel LIKE %'" & strKeyWord & "%'"
    Set objRs = objConn.Execute(strSQL)
   
    While Not objRs.EOF
        arrWords = Split(objRs("colArtikel")," ")
        For i = 0 To Ubound(arrWords)
            If arrWords(i) = strKeyWord Then
                strString = strString & "<b>" & arrWords(i) & "</b>"
            Else
                strString = strString & arrWords(i)
            End If
        Next
        strTotalString = strTotalString & strString
    objRs.MoveNext()
    Wend
   
    Response.Write(strTotalString)
%>

</body>
</html>

//>Rune
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:44 #10
Den ku minde meget om den jeg lige fandt.

function highlight(strKeyword, strStringToSearch, strHighlightColor)
    ' Andreas Mailand, am@wkh.dk, 30.10.02
    ' strWordsToHighlight : | - separeret streng, som indeholder de ord, der skal highlightes
    ' strStringToSearch : streng, der skal gennemsøges for de ord, der skal hightlightes (db-udtræk)
    ' strHighlightColor : streng, der indeholder den baggrundsfarve, de fundne ord, skal mærkes med
   
    arrHighlight = split(trim(strKeyword),"|")
   
    strOutput = strStringToSearch
   
    for i = 0 to  ubound(arrHighlight)
        strOutput = replace(strOutput, arrHighlight(i), "<span style=""background-color:" & strHighlightColor & ";"">" & arrHighlight(i) & "</span>")
    next
   
    highlight = strOutput
   
end function

Kan dog ikke helt få det til at virke.

Poster lige hele koden her... Så værsgo' en lille søgemaskine :o)
Kan dog ikke selv tage æren for den. Dennis Knappe!

Obs. Får fejl i Highlight(stripHTML)

<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>

</head>

<body>

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("index.asp")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, Title, Article FROM Articles WHERE"
strSQL = strSQL & " (Title LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (Article LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("CMS.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)

Function RegReplace(inStr)
  Dim regEx
  Set regEx = New RegExp
  regEx.Global = True
  regEx.IgnoreCase = True
  regEx.Pattern = "<[^>]+>"
  inStr=regEx.Replace(inStr, "")
  RegReplace=inStr
End Function

function highlight(strKeyword, strStringToSearch, strHighlightColor)
    ' Andreas Mailand, am@wkh.dk, 30.10.02
    ' strWordsToHighlight : | - separeret streng, som indeholder de ord, der skal highlightes
    ' strStringToSearch : streng, der skal gennemsøges for de ord, der skal hightlightes (db-udtræk)
    ' strHighlightColor : streng, der indeholder den baggrundsfarve, de fundne ord, skal mærkes med
   
    arrHighlight = split(trim(strKeyword),"|")
   
    strOutput = strStringToSearch
   
    for i = 0 to  ubound(arrHighlight)
        strOutput = replace(strOutput, arrHighlight(i), "<span style=""background-color:" & strHighlightColor & ";"">" & arrHighlight(i) & "</span>")
    next
   
    highlight = strOutput
   
end function

If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>Overskrift</th><th>Artikel</th><th>Link</th></tr>"
   
    StripHTML = Regreplace(LEFT(rs("Article"), 150))
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("Title") & "</td>"
        Response.Write "<td>" & highlight(StripHTML) & "</td>"
        Response.Write "<td><a href=""index.asp?id=" & rs("id") & """( target=""_parent"">Link</a></td>"
        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If
' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body>
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:45 #11
Fejlen er: øhh

Microsoft VBScript runtime error '800a01c2'
Wrong number of arguments or invalid property assignment: 'highlight'

/sog/search.asp, line 72
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:46 #12
Det som den skal highlighte er strKeyword som er søgeordet
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:47 #13
Tror fejlen ligger i

    ' strKeyword             : | - separeret streng, som indeholder de ord, der skal highlightes
    ' strStringToSearch : streng, der skal gennemsøges for de ord, der skal hightlightes (db-udtræk)
    ' strHighlightColor : streng, der indeholder den baggrundsfarve, de fundne ord, skal mærkes med


Mangler vist at tilpasse det til mit script rigtigt
Avatar billede medions Nybegynder
25. oktober 2002 - 20:49 #14
daniel_d> Jeg skal til fest nu...

-jeg kigger lige på det i morgen!

//>Rune
Avatar billede daniel_d Nybegynder
25. oktober 2002 - 20:58 #15
ok...
Takker for hjælp indtil videre!
Avatar billede daniel_d Nybegynder
26. oktober 2002 - 03:49 #16
Medions> Det lykkedes mig at lave funktionen i løbet af natten :)
Men du prøvede jo at hjælpe mig, så pointene går til dig alligevel.

Tak!
Avatar billede medions Nybegynder
26. oktober 2002 - 11:28 #17
Fair nok :o)
Thx 4 Poinz

//>Rune
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