webForumDet fria alternativet

RegExp funkar bara delvis...

ASP

1 svar · 192 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Allå!

Jag blir galen på den här funktionen:

<%
'------------------------------------------------------------- SKAPA KLICKBARA LÄNKAR
Function Visa(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=""_blank"">" & 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=""_blank"">" & o.Value & "</A>") Else s = Replace(s, o.Value, "<A HREF=""" & o.Value & """ target=""_blank"">" & o.Value & "</A>") 
End If 
Next 
Set objRE = Nothing 

'----------- Tillåten HTML kod
s = Replace(s, "[bild]", "<div align='center'><center><img src='bildarkiv/")
s = Replace(s, "[/bild]", "' border='0'></center></div>")
s = Replace(s, "[bildtext]", "<div align='center'><center><font size='1'><i>")
s = Replace(s, "[/bildtext]", "</i></font></center></div>")
s = Replace(s, "[liten]", "<font size='1'>")
s = Replace(s, "[/liten]", "</font>")
s = Replace(s, "[stor]", "<font size='3'>")
s = Replace(s, "[/stor]", "</font>")
s = Replace(s, vbCrLf, "<br>")
s = Replace(s, "&#65533;", "")

Visa = s

End Function
%>

Alla modifierade html-kommandon fungerar som de skall men texter som börjar på http:// och www blir inte klickbara länkar, vilket är tanken. Detta fungerar utmärkt på ett annat projekt men vägrar att fungera nu.

Så här kör jag hämtningen från databasen:

<%
If Not RSTexter.EOF Then
  strFaktaText = RSTexter("Fakta")
  If Len(strFaktaText)>0 Then
    Response.Write Visa(Server.HTMLEncode(strFaktaText))
  End If
End If
%>

Jag fattar inte vad jag gör för fel. Den första delen med klickbara länkar är kopierad rakt av från ett annat projekt (fast där hette funktionen FixaLankar) och de modifierade html-koderna fungerar precis som de skall i det här projektet jag håller på med nu. Hälften fungerar alltså. vad gör jag fel?

Medlem sedan feb. 2004333 inlägg
#2

Jaaa, hittade felet. Hade glömt "dimma" objRE, m, o vilket jag har som krav på det här projektet med Option.Explicit. Dett fick jag se när jag tog bort On error resume next.

258 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)