25. oktober 2002 - 20:17Der 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.
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
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 ?
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!
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
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
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!
<% ' 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 %>
' 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
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.