paddanMedlem sedan dec. 2002323 inlägg
har ett litet problem...det är så här jag har denna replace funktionen:
Innlegg=.Replace(Innlegg,"<img src=""upload/textbilder/$1"" height="""& getImgHeight("/upload/textbilder/$1")&""" alt=""$1"" class=""text_bild"" />")
Framför allt denna raden ska ni kolla på: height="""& getImgHeight("/upload/textbilder/$1")&"""
jag försöker få utan höjden på det:
getImgHeight funktionen:
Function getImgHeight(img)
Dim myImg, fs
SET fs= CreateObject("Scripting.FileSystemObject")
IF fs.fileExists(Server.MapPath(img)) THEN
SET myImg = loadpicture(Server.MapPath(img))
getImgHeight = round(myImg.height / 26.4583)
SET myImg = nothing
ELSE
getImgHeight=""
END IF
SET fs=Nothing
END Function
men problemmet är att den vill inte...skirver jag namnet på bilden istället för $1 så funkar det...men inte annars...
vad är felet?
Peter SMedlem sedan dec. 20025 484 inlägg
Replace(Innlegg,getref("f"))
function f(r,o,m,a)
f = "<img src=""upload/textbilder/"& o &""" height="""& getImgHeight("/upload/textbilder/"& o &"") &""" alt="""& o &""" class=""text_bild"" />"
end function
paddanMedlem sedan dec. 2002323 inlägg
Jag förstår inte riktigt ditt svar som du gav mig..kan du förklara lite?
Mvh martin
Peter SMedlem sedan dec. 20025 484 inlägg
Det mest intressanta är först och främst huruvida det fungerade som du tänkt dig.
:)
paddanMedlem sedan dec. 2002323 inlägg
Jag vet inte riktigt var jag ska göra av det..!
Så här ser koden ut från början...
.Pattern="\[bild\]([\w\W]*?)\[/bild\]"
Innlegg=.Replace(Innlegg,"<img src=""upload/textbilder/$1"" width="""& getImgWidth("/maxi/upload/textbilder/$1")&""" alt=""$1"" class=""text_bild"" />")
Men den ger inget värde på widthen...
Jag förstår inte riktigt hur din kod ska kunna fungera här..!
Mvh Martin
Peter SMedlem sedan dec. 20025 484 inlägg
Har du testat den? Jag bifogar ett minimalt exempel som visar hur det kan gå till :)
paddanMedlem sedan dec. 2002323 inlägg
Jag får inte riktigt rätt på det...
jag kanske ska förklara lite mer.
Det är när jag skriver ut en text så ligger det bildnamn i den texten.
Jag hämtar sedan ut bilderna från en speciell mapp.
Hela koden just nu:
<%
Innlegg = Replace(Server.HTMLEncode(rs("info")),vbCrLf,"<br />")
With New RegExp
.Global=True
.IgnoreCase=True
.Pattern="\[u\]([\w\W]*?)\[/u\]"
Innlegg=.Replace(Innlegg,"<h5>$1</h5>")
.Pattern="\[b\]([\w\W]*?)\[/b\]"
Innlegg=.Replace(Innlegg,"<strong>$1</strong>")
.Pattern="\[i\]([\w\W]*?)\[/i\]"
Innlegg=.Replace(Innlegg,"<em>$1</em>")
.Pattern="\[p\]([\w\W]*?)\[/p\]"
Innlegg=.Replace(Innlegg,"<div class=""box"">$1</div>")
.Pattern="\[r\]([\w\W]*?)\[/r\]"
Innlegg=.Replace(Innlegg,"<em class=""red"">$1</em>")
.Pattern="\[g\]([\w\W]*?)\[/g\]"
Innlegg=.Replace(Innlegg,"<em class=""green"">$1</em>")
.Pattern="\[bl\]([\w\W]*?)\[/bl\]"
Innlegg=.Replace(Innlegg,"<em class=""blue"">$1</em>")
.Pattern="\[c\]([\w\W]*?)\[/c\]"
Innlegg=.Replace(Innlegg,"<p class=""center"">$1</p>")
.Pattern="\[www\]([\w\W]*?)\[/www\]"
Innlegg=.Replace(Innlegg,"<a href=""http://$1"" title=""$1"">$1</a>")
.Pattern="\[list\]([\w\W]*?)\[/list\]"
Innlegg=.Replace(Innlegg,"<ul class=""text_list""><li>$1</li></ul>")
dim a
a = inlegg
set r = new regexp
with r
.pattern = "\[img](.*?)\[/img]"
a = .Replace(a,getref("f"))
end with
set r = nothing
response.write a
function f(r,o,m,a)
f = "<img src=""upload/textbilder/"& o &""" height="""& getImgHeight("/upload/textbilder/"& o &"") &""" alt="""& o &""" class=""text_bild"" />"
end function
End With
Response.write(Innlegg)
%>
Denna koden ger syntax error på function f(r,o,m,a)
Mvh martin
Peter SMedlem sedan dec. 20025 484 inlägg
Skall det inte vara 'Innlegg' nedan
a = inlegg
Istället för att skapa ett nytt RegExp-objekt ('r') kan du fortsätta på det föregående.
Anledningen till felmeddelandet tror jag är att funktioner inte får skapas i ett With-block.
<%
Innlegg = Replace(Server.HTMLEncode(rs("info")),vbCrLf,"<br />")
With New RegExp
.Global=True
.IgnoreCase=True
.Pattern="\[u\]([\w\W]*?)\[/u\]"
Innlegg=.Replace(Innlegg,"<h5>$1</h5>")
.Pattern="\[b\]([\w\W]*?)\[/b\]"
Innlegg=.Replace(Innlegg,"<strong>$1</strong>")
.Pattern="\[i\]([\w\W]*?)\[/i\]"
Innlegg=.Replace(Innlegg,"<em>$1</em>")
.Pattern="\[p\]([\w\W]*?)\[/p\]"
Innlegg=.Replace(Innlegg,"<div class=""box"">$1</div>")
.Pattern="\[r\]([\w\W]*?)\[/r\]"
Innlegg=.Replace(Innlegg,"<em class=""red"">$1</em>")
.Pattern="\[g\]([\w\W]*?)\[/g\]"
Innlegg=.Replace(Innlegg,"<em class=""green"">$1</em>")
.Pattern="\[bl\]([\w\W]*?)\[/bl\]"
Innlegg=.Replace(Innlegg,"<em class=""blue"">$1</em>")
.Pattern="\[c\]([\w\W]*?)\[/c\]"
Innlegg=.Replace(Innlegg,"<p class=""center"">$1</p>")
.Pattern="\[www\]([\w\W]*?)\[/www\]"
Innlegg=.Replace(Innlegg,"<a href=""http://$1"" title=""$1"">$1</a>")
.Pattern="\[list\]([\w\W]*?)\[/list\]"
Innlegg=.Replace(Innlegg,"<ul class=""text_list""><li>$1</li></ul>")
.Pattern = "\[img](.*?)\[/img]"
Innlegg=.Replace(Innlegg,getref("f"))
End With
Response.write(Innlegg)
function f(r,o,m,a)
f = "<img src=""upload/textbilder/"& o &""" height="""& getImgHeight("/upload/textbilder/"& o &"") &""" alt="""& o &""" class=""text_bild"" />"
end function
%>
paddanMedlem sedan dec. 2002323 inlägg
Den koden ger också syntax error på funktionen!
Peter SMedlem sedan dec. 20025 484 inlägg
Om det där är all ASP-kod du använder är det inte så konstigt. Parsern borde då klaga på delen med getImgHeight(...).
:)
paddanMedlem sedan dec. 2002323 inlägg
Men vad ska jag göra då?
Har du några ideer?
Peter SMedlem sedan dec. 20025 484 inlägg
Om inte ovanstående är all ASP-kod är nog det bästa att bifoga just all kod.
:)
paddanMedlem sedan dec. 2002323 inlägg
Kod som skriver ut allt:
<%
Innlegg = Replace(Server.HTMLEncode(rs("info")),vbCrLf,"<br />")
With New RegExp
.Global=True
.IgnoreCase=True
.Pattern="\[u\]([\w\W]*?)\[/u\]"
Innlegg=.Replace(Innlegg,"<h5>$1</h5>")
.Pattern="\[b\]([\w\W]*?)\[/b\]"
Innlegg=.Replace(Innlegg,"<strong>$1</strong>")
.Pattern="\[i\]([\w\W]*?)\[/i\]"
Innlegg=.Replace(Innlegg,"<em>$1</em>")
.Pattern="\[p\]([\w\W]*?)\[/p\]"
Innlegg=.Replace(Innlegg,"<div class=""box"">$1</div>")
.Pattern="\[r\]([\w\W]*?)\[/r\]"
Innlegg=.Replace(Innlegg,"<em class=""red"">$1</em>")
.Pattern="\[g\]([\w\W]*?)\[/g\]"
Innlegg=.Replace(Innlegg,"<em class=""green"">$1</em>")
.Pattern="\[bl\]([\w\W]*?)\[/bl\]"
Innlegg=.Replace(Innlegg,"<em class=""blue"">$1</em>")
.Pattern="\[c\]([\w\W]*?)\[/c\]"
Innlegg=.Replace(Innlegg,"<p class=""center"">$1</p>")
.Pattern="\[www\]([\w\W]*?)\[/www\]"
Innlegg=.Replace(Innlegg,"<a href=""http://$1"" title=""$1"">$1</a>")
.Pattern="\[list\]([\w\W]*?)\[/list\]"
Innlegg=.Replace(Innlegg,"<ul class=""text_list""><li>$1</li></ul>")
.Pattern = "\[img](.*?)\[/img]"
Innlegg=.Replace(Innlegg,getref("f"))
End With
Response.write(Innlegg)
function f(r,o,m,a)
f = "<img src=""upload/textbilder/"& o &""" height="""& getImgHeight("/upload/textbilder/"& o &"") &""" alt="""& o &""" class=""text_bild"" />"
end function
%>
Och här har du funktionerna som tar widthen och heighten
Function getImgWidth(img)
Dim myImg, fs
SET fs= CreateObject("Scripting.FileSystemObject")
IF fs.fileExists(Server.MapPath(img)) THEN
SET myImg = loadpicture(Server.MapPath(img))
getImgWidth = round(myImg.width / 26.4583)
SET myImg = nothing
ELSE
getImgWidth="Fel!"
END IF
SET fs=Nothing
END Function
Function getImgHeight(img)
Dim myImg, fs
SET fs= CreateObject("Scripting.FileSystemObject")
IF fs.fileExists(Server.MapPath(img)) THEN
SET myImg = loadpicture(Server.MapPath(img))
getImgHeight = round(myImg.height / 26.4583)
SET myImg = nothing
ELSE
getImgWidth="Fel!"
END IF
SET fs=Nothing
END Function
Orsaken till detta är att få sidan godkänd i validatorn som kräver widht och height på alla bilder.
Mvh martin
Peter SMedlem sedan dec. 20025 484 inlägg
Ha du testat getImgHeight/-Width separat så att de fungerar? Om inte kan du ju definiera dem som
function getImgHeight(s)
getImgHeight = 365
end function
...och se så att RegExp:arna fungerar.
Denna rad
Innlegg = Replace(Server.HTMLEncode(rs("info")),vbCrLf,"<br />")
...tyder på att det finns mer kod att visa. Ligger With-blocket innanför något annat kontrollblock? Som jag skrev innan tror jag ej att funktioner kan definieras i sådana block, vilket är fallet om du använder ovanstående kod.
paddanMedlem sedan dec. 2002323 inlägg
Hej
Om jag tar min ursprungliga kod:
Innlegg=.Replace(Innlegg,"<img src=""upload/textbilder/$1"" height="""& getImgHeight("/upload/textbilder/$1")&""" alt=""$1"" class=""text_bild"" />")
och byter ut $1 i height="""& getImgHeight("/upload/textbilder/$1")&""" till namnet på bilden så fungerar både getImgheight och getImgwidth så funktionerna fungerar.
Men den verkar inte skicka rätt in i funktionen om jag använder $1.
Mvh martin
Peter SMedlem sedan dec. 20025 484 inlägg
Ja, det är därför mitt förslag fungerar. Problemet, som sagt, tror jag ligger i att du lagt f() i ett kontrollblock istället för globalt.
paddanMedlem sedan dec. 2002323 inlägg
Du hade fullständigt rätt...jag la funtionen uppe ovanför html taggen... och sedan ändrade jag en liten sak bara..! med pattern taggen!
.Pattern="\[bild\]([\w\W]*?)\[/bild\]"
Innlegg=.Replace(Innlegg,getref("f"))
Function getImgWidth(img)
Dim myImg, fs
SET fs= CreateObject("Scripting.FileSystemObject")
IF fs.fileExists(Server.MapPath(img)) THEN
SET myImg = loadpicture(Server.MapPath(img))
getImgWidth = round(myImg.width / 26.4583)
SET myImg = nothing
ELSE
getImgWidth="Fel!"
END IF
SET fs=Nothing
END Function
Function getImgHeight(img)
Dim myImg, fs
SET fs= CreateObject("Scripting.FileSystemObject")
IF fs.fileExists(Server.MapPath(img)) THEN
SET myImg = loadpicture(Server.MapPath(img))
getImgHeight = round(myImg.height / 26.4583)
SET myImg = nothing
ELSE
getImgHeight=img
END IF
SET fs=Nothing
END Function
function f(r,o,m,a)
f = "<img src=""/maxi/upload/textbilder/"& o &""" width="""& getImgWidth("/maxi/upload/textbilder/"& o &"") &""" height="""& getImgHeight("/maxi/upload/textbilder/"& o &"") &""" alt="""& o &""" class=""text_bild"" />"
end functio
n
Tack för all hjälp...jäkligt snällt!
Peter SMedlem sedan dec. 20025 484 inlägg
Weee! :bire
Anledningen till att jag använder getref() är att det annars verkar vara svårt att läsa av captures ($1...$n). Ibland vill man ju faktiskt kunna skicka in dem i en funktion (getImgHeight/-Width i ditt fall).
'f' var bara ett exempel från min sida. Du kan ju döpa om funktionen till något mer passande namn. :)
Glöm inte att använda acceptera som slutgiltigt svar.