Avatar billede cdc Novice
10. februar 2004 - 21:23 Der er 22 kommentarer og
2 løsninger

Slette et <img> fra streng

hvordan laver man et script som sletter et <img .......> fra en streng man udskriver i asp, eller sletter all html kode

/cdc
Avatar billede nmh Nybegynder
10. februar 2004 - 21:50 #1
Du må lige fortælle lidt mere om hvad der foregår.
Hvordan ser din streng ud?
Avatar billede eagleeye Praktikant
10. februar 2004 - 21:51 #2
Skal der slette enten <img> tags eller alle html tags?
Avatar billede cdc Novice
10. februar 2004 - 22:24 #3
Jeg har en nyhedsbok spå forsiden som henter de første 150 karakterer fra et indleg/tekst i en db. I den tekst ligger der et link til et billed. Det er ikke plads til billedet i boksen, og derfor vil jeg gerne have slettet det tag.

Hvis det er nemmere at slette alle er det helt fint, da det er lige meget med bold osv
Avatar billede ellebaek Nybegynder
10. februar 2004 - 23:10 #4
<%
function checkInput(inputstreng)
dim regcon
set regcon = new RegExp
regcon.pattern = "\<img(.*?)\>"
regcon.ignoreCase = true
str = regcon.replace(str, "")
checkInput = str

end function

response.write checkInput(request.form("tekst"))
%>
Noget i denne stil måske ?
Avatar billede ellebaek Nybegynder
10. februar 2004 - 23:11 #5
det der skulle gerne tage sig af <img ...> tags
Avatar billede eagleeye Praktikant
10. februar 2004 - 23:12 #6
Et eks denne fjerne alt imellem  <  og  >  dermed alle HTML tags:

<%
str = "Denne <img src=""bla.gif"" width=""40""> besked <b>mega</b> skal tjekkes <img src=""bla.gif"" width=""40"">."
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = true
regEx.Pattern = "(<.*?>)"
str = regEx.Replace (str,"")
Set regEx = Nothing

Response.Write str
%>
Avatar billede ellebaek Nybegynder
10. februar 2004 - 23:13 #7
Ja, jeg havde lige nogle \ for mange...

<%
function checkInput(inputstreng)
dim regcon
set regcon = new RegExp
regcon.pattern = "<img(.*?)>"
regcon.ignoreCase = true
str = regcon.replace(str, "")
checkInput = str

end function

response.write checkInput(request.form("tekst"))
%>

Og så kan det som eagle skriver udbygges ved at fjerne img efter den første <
Avatar billede cdc Novice
10. februar 2004 - 23:24 #8
Jeg har denne kode, og kan ikke lige se hvor den skal placeres:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("news/mailing.mdb")
Conn.Open DSN

strSQL = "Select top 1 * From nyheder Order By dato Desc"

Set rs = Conn.Execute(strSQL)

Do
' Nyhed fra DB
strNavn = FixaLankar(Server.HTMLEncode(rs("tekst")))

' Link til Nyhedsiden
strLink = "<a href='news/news.asp'>" & left(strNavn,170) & "...</a><br>"

' Liste med links
Response.Write "" & strLink & ""

rs.MoveNext
Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing
%>
Avatar billede ellebaek Nybegynder
10. februar 2004 - 23:28 #9
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("news/mailing.mdb")
Conn.Open DSN

strSQL = "Select top 1 * From nyheder Order By dato Desc"

Set rs = Conn.Execute(strSQL)


function checkInput(inputstreng)
dim regcon
set regcon = new RegExp
regcon.pattern = "(<img(.*?)>)"
regcon.ignoreCase = true
str = regcon.replace(str, "")
checkInput = str

end function


Do
' Nyhed fra DB
strNavn = FixaLankar(Server.HTMLEncode(rs("tekst")))

' Link til Nyhedsiden
strLink = "<a href='news/news.asp'>" & checkInput(left(strNavn,170)) & "...</a><br>"

' Liste med links
Response.Write "" & strLink & ""

rs.MoveNext
Loop While Not rs.EOF

Conn.Close
Set Conn = Nothing

%>

Sådan her måske.
Avatar billede cdc Novice
10. februar 2004 - 23:49 #10
nu skriver den kun ...dem før <a/>
Avatar billede eagleeye Praktikant
10. februar 2004 - 23:55 #11
Prøv at rette denne linje i funtionen:

str = regcon.replace(str, "")

Til:

str = regcon.replace(inputstreng, "")
Avatar billede cdc Novice
11. februar 2004 - 00:02 #12
jeg brugte denne til at fjerne <b> med via <!--#Include file="link.asp"--> hvor det er defineret, nu virker den ikke så nu er texten fed..
men nu kommer texten frem fint uden <img>

kan man slette <b> og </b> tags også med denne
Avatar billede eagleeye Praktikant
11. februar 2004 - 00:11 #13
Ja du kan lave pattern'et om til dette:

regcon.pattern = "(<(img|b|\/b)(.*?)>)"

Så fjerner den <b>, </b> og <img> tags.
Avatar billede cdc Novice
11. februar 2004 - 00:15 #14
ved ikke om serveren cacher siden, men det virker ikke, så jeg må lige vente lidt
Avatar billede eagleeye Praktikant
11. februar 2004 - 00:16 #15
når du udskriver stå teksen så som <b> eller er teksten fed?
Avatar billede cdc Novice
11. februar 2004 - 00:19 #16
den er fed
Avatar billede cdc Novice
11. februar 2004 - 00:19 #17
siden er desværre ikke officiel endnu, så jeg kan ikke linke til den desværre
Avatar billede eagleeye Praktikant
11. februar 2004 - 00:26 #18
hmm den skulle fjerne dem?

umiddelbart ser det nemlig ud som om teksetn bliver HTMLencodet i linje:
strNavn = FixaLankar(Server.HTMLEncode(rs("tekst")))
Avatar billede eagleeye Praktikant
11. februar 2004 - 00:31 #19
Så det undre mig lidt at <b> gør teksten fed og det ikke er lige som her på eksperten hvor der bare står <b> som tekst??
men FixaLankar laver måske nogle speciel tags [b] om til <b> igen??

nå jeg smutter for i aften, god nat og sov godt :)
Avatar billede cdc Novice
11. februar 2004 - 08:26 #20
når jeg brugte denne strNavn = FixaLankar(Server.HTMLEncode(rs("tekst"))) sammen med scriptet, virkede kun den at fed blev væk, men img tagget stod der.
strNavn = FixaLankar(Server.HTMLEncode(rs("tekst"))) er fjærnet nu, og ja, den laver <b> om til [b]:

<%Function FixaLankar(s)
On error resume next
Set objRE = new RegExp
objRE.IgnoreCase = True : objRE.Global = True
objRE.Pattern = "(http:\/\/|www\.)(\w|\&|\:|\;|\.|\/|\?|\~|\=|-)+"
Set m = objRE.Execute(s)
For Each o In m
If Right(o.Value, 1)="." Or Right(o.Value, 1)="!" Or Right(o.Value, 1)="?" Or Right(o.Value, 1)="," Then
If Left(o.Value, 3) = "www" Then s = Replace(s, o.Value, "<A HREF=""http://" & Left(o.Value, Len(o.Value)-1) & """ target=""_top"">" & Left(o.Value, Len(o.Value)-1) & "</A>" & Right(o.Value, 1)) Else s = Replace(s, o.Value, "<A HREF=""" & Left(o.Value, Len(o.Value)-1) & """>" & Left(o.Value, Len(o.Value)-1) & "</A>" & Right(o.Value, 1))
Else
If Left(o.Value, 3) = "www" Then s = Replace(s, o.Value, "<A HREF=""http://" & o.Value & """ target=""_top"">" & o.Value & "</A>") Else s = Replace(s, o.Value, "<A HREF=""" & o.Value & """ target=""_blank"">" & o.Value & "</A>")
End If
Next
Set objRE = Nothing

    ' Gyldig HTML kode
s    = Replace(s,"[f]","<b>")
s    = Replace(s,"[/f]","</b>")
s    = Replace(s,"[k]","<i>")
s    = Replace(s,"[/k]","</i>")
s    = Replace(s,"[farg]","<font color=#800000>")
s    = Replace(s,"[/farg]","</font>")
s    = Replace(s, vbCrLf, "<br>")
s    = Replace(s,"","")

FixaLankar = s

End Function%>
Avatar billede cdc Novice
11. februar 2004 - 08:38 #21
Har slettet den da jeg ikke bruger fixlenkar til noget i dette scrit da jeg smider ting ind i db koden i db ser således ud:

<img border="0" src="../images/photo/photo_grunderen.gif" align="right" class="img"><b>Graffiti Konkurrence for at være indstillet til DHHA´s Graffiti Pris :</b>

/cdc
Avatar billede eagleeye Praktikant
11. februar 2004 - 17:14 #22
arh der mangler lige en "meget" vigtig property at blive sat i den funktion ellebaek har vist :))
.Global = true eller stopper den efter føste gang den finder noget

Så tilføj denne linje inde i funtion evt. lige før linje med .pattern:

regcon.Global = true
Avatar billede cdc Novice
11. februar 2004 - 17:47 #23
så virker det, smider du ikke et svare eagleeye, da jeg har forjøjet points fra 15 til 30 så er der 15 til hver :o) Takker for den gode hjælp, så nu spiller det max
Avatar billede eagleeye Praktikant
11. februar 2004 - 17:49 #24
cool.. ok her et 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