webForumDet fria alternativet

Ersätta <img med text i html

ASP

8 svar · 351 visningar · startad av hakan@4u2.se

Medlem sedan aug. 2000333 inlägg
Frågan#1

Har en html kod där jag behöver kunna ersätta <img src='bild1'> till Code1 osv! Men jag är så hemsk dålig på regexp, någon som kan?

T ex

<img src='bild1'> Vi testar lite HTML <img src='bild2' border='1'>

Ska bli

Code1 Vi testar lite HTML Code2
Medlem sedan okt. 20041 556 inlägg
#2
Function replaceImgtags(ByVal str,ByVal repstr)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = true
	objRegExp.IgnoreCase = true
	objRegExp.Pattern = "(<img(.*?)>)"
	replaceImgtags = objRegExp.Replace(str,repstr)
	Set objRegExp = Nothing
End Function

Response.write replaceImgtags("<img src='Hej'>Bild på båda sidor?<img src='Hej' alt=""Alt. bildtext"">", " [ code ] ")

Numreringen blir kruxigare. Måste du ha med den?

Medlem sedan aug. 2000333 inlägg
#3

Jo jag måste ha med numreringen, annars kan jag inte bytta tillbacks code1 till img1 osv!

Medlem sedan dec. 20025 483 inlägg
#4
dim re
set re = new regexp

re.pattern    = "<img src='bild(\d+)'[^>]*>"
re.global     = true
re.ignorecase = true

' txt innehåller din text
txt = re.replace(txt, "Code$1")

set re = nothing
Medlem sedan aug. 2000333 inlägg
#5

Tack det fungerar!

Jag var egentligen lite otydlig i min fråga...sorry!

Har en funktion som inte fungerar med <img src='bild1'> i koden,därför måste jag byta ut alla img taggar mot code1, code2 osv innan jag kör den funktionen och bytta tillbacks efter jag har kört den funktionen. Därför måste jag veta vilken bild code1 =, t ex code1 = 'nalle.gif', code2='power.bmp' osv. Förstår ni vad jag menar?

Det kan ligga i en array t ex!

Någon som har någon förslag?

Medlem sedan dec. 20025 483 inlägg
#6

Får man fråga varför det inte går att köra funktionen mot textsträngen "<img src=''>"? Det verkar väldigt onödigt att konvertera fram och tillbaka.

Medlem sedan dec. 20025 483 inlägg
#7

Här är ett förslag:

txt = 'din text...'

dim re
set re = new regexp

re.pattern    = "<img src='(.*?)'[^>]*>"
re.global     = true
re.ignorecase = true

dim matches
set matches = re.execute(txt)

if matches.count > 0 then
  dim arr(), index, i
  index = 0

  redim arr (matches.count - 1)

  ' arr(i) innehåller filnamnet. Ex.:
  ' arr(0) = nalle.gif
  ' arr(1) = foobar.bmp
  for i = lbound(arr) to ubound(arr)
    arr(i) = matches(i).submatches(0)
  next

  re.pattern = "<img src='.*?'[^>]*>"
  re.global  = false

  dim counter
  counter = 0

  ' Här kommer Codei att motsvara det i:te elementet i arr() ovan. Ex.:
  ' Code0 = nalle.gif  (arr(0))
  ' Code1 = foobar.bmp (arr(1))
  do while re.test(txt)
    txt     = re.replace(txt, "Code" & counter)
    counter = counter + 1
  loop
end if

set re = nothing
Medlem sedan aug. 2000333 inlägg
#8

Vet inte riktigt jag har inte gjort funktionen själv, det är xhtml och regexp, inte mina starka sidor! Ska kolla på ditt förslag!

Medlem sedan aug. 2000333 inlägg
#9

Tack Peter S o ni andra!
Det fungerar perfekt!

Tyvärr så fungerar inte min funktion iaf, men det är inte erat fel ;)

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)