webForumDet fria alternativet

Byt ut bildsökväg med RegExp

ASP

9 svar · 684 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

Hur byter jag ut bildsökvägen <img src="http://www.hemsida.se/include/bild.gif" border="0" alt="Symbol">

med RegExp?

Sökvägen ligger i en databas och behöver väl egentligen inte bearbetas ytterliggare för att visas som en bild när innehållet i databasen skrivs ut. Men jag har fler RegExp-uttryck som verkar förstöra bildsökvägen, se nedan:

Function StripText(strPageText)
mDelimit = Chr(0)
Set Re = New RegExp
Re.Global = True
Re.IgnoreCase = True
      
Re.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
strPageText = Re.Replace(strPageText, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")
      
Re.Pattern = "(http://|https://|ftp://|mailto:)(\S)(\S+)"
strPageText = Re.Replace(strPageText, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")
      
Re.Pattern = "(www\.(\S)(\S+))"
strPageText = Re.Replace(strPageText, "<a href=""http://$1"" target=""_blank"">$1</a>")
strPageText = Replace(strPageText, mDelimit, "")
	  
Response.Write strPageText
End Function
Medlem sedan dec. 20025 483 inlägg
#2
myPath 'innehåller sökvägen
set re = new regexp
re.global = true
re.ignorecase = true
re.pattern = "<img src=""(?:[^/]*/)*([^/""]+)"
result = re.replace(myInputString, "<img src=""" & myPath & "$1")
set re = nothing
Medlem sedan maj 2002821 inlägg
#3

Hmm, sökvägen i "$1" blir bara "a>". Ingen bild visas.

Medlem sedan juni 20019 519 inlägg
#4

hur ser din funktion i helhet ut nu då?

Medlem sedan dec. 20025 483 inlägg
#5

Vad står i src?

Medlem sedan maj 2002821 inlägg
#6

I src står det http://www.hemsida.se/include/bild.gif

Medlem sedan dec. 20025 483 inlägg
#7

Det skulle ha ersatts. Testa t.ex. följande för sig:

 myPath = "/My/Path/"
 a = "<img src=""http://www.hemsida.se/include/bild.gif"" border=""0"" alt=""Symbol"">"
 set re = new regexp
 re.global = true
 re.ignorecase = true
 re.pattern = "<img src=""(?:[^/]*/)*([^/""]+)"
 response.write re.replace(a, "<img src=""" & myPath & "$1")
Medlem sedan dec. 20025 483 inlägg
#8

Du kan även lägga ovanstående kod i en egen funktion F och göra:

str = StripText(str)
str = F(str)

Dessutom skall StripText avslutas med

StripText = strPageText

...i stället för

Response.Write strPageText
Medlem sedan maj 2002821 inlägg
#9

Men $1 ger fortfarande bara >a i sökväg, det är inte något fel i Pattern då?

Function StripText(strPageText)
mDelimit = Chr(0)
Set Re = New RegExp
Re.Global = True
Re.IgnoreCase = True

Re.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
strPageText = Re.Replace(strPageText, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")

Re.Pattern = "(http://|https://|ftp://|mailto:)(\S)(\S+)"
strPageText = Re.Replace(strPageText, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")

Re.Pattern = "(www\.(\S)(\S+))"
strPageText = Re.Replace(strPageText, "<a href=""http://$1"" target=""_blank"">$1</a>")
strPageText = Replace(strPageText, mDelimit, "")

Re.Pattern = "<img src=""(?:[^/]*/)*([^/""]+)"
strPageText = Re.Replace(strPageText, "<img src=""$1")

StripText = strPageText
Set Re = Nothing
End Function

Medlem sedan dec. 20025 483 inlägg
#10

Helt rätt ;)

re.pattern = "<img src=""(?:[^/]*/)*?([^/""]+)"""
re.replace(request("t"), "<img src=""" & m & "$1""")
296 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
163 ms — ändringar (db)