webForumDet fria alternativet

Göra om www.länk.com till <a href="www.länk.com"></a>

ASP

13 svar · 1 111 visningar · startad av oskars

Medlem sedan nov. 20051 317 inlägg
Frågan#1

Hej,

antar att det här är en baggis. Jag har sökt och hittat lite script som gör det här, men jag har inte lyckats kopplat ihop det med min lilla databas.

Så här ser det ut:

Function ChangeLinks(text)
Set objRE = New regexp
objRE.Global = True
objRE.IgnoreCase = True

objRE.Pattern = "(www.[^ ]*[a-z])|(http://[^ ]*[a-z])"
text = objRE.Replace(text,"<a href=""$1$2"" target=""_blank"">$1$2</a>")

ChangeLinks = text

Set objRE = Nothing
End Function

I min guestbook.asp ser det bland annat ut så här:

Response.Write("<div style=margin:10px;padding:10px;"& varQuery &"><b>Gästboksinlägg:</b>")
Response.Write ("<br>")
Response.Write (rsGuestbook("Name"))
Response.Write ("<br>")
Response.Write (rsGuestbook("Comments"))
Response.Write ("</div>")

Men när jag lägger URL-koden i samma dokument så blir ändå inte URLerna från databasen till href-länkar.

Vart har jag kopplat fel?

Tacksam för svar =)

Oskar

Medlem sedan juni 200032 967 inlägg
#2

Du kallar ju aldrig på funktionen?

Medlem sedan nov. 20051 317 inlägg
#3

Okej, hur gör jag för att baka in det korrekt?

Medlem sedan juni 200032 967 inlägg
#4
Response.Write ChangeLinks(rsGuestbook("Comments"))
Medlem sedan nov. 20051 317 inlägg
#5

:OO Wow, Tack! Det funkade!

Medlem sedan nov. 20051 317 inlägg
#6

Tjena, väcker min halvgamla tråd härifrån.

Jag använder samma funktion som ovan. + en annan som gör om ENTER i textfältet till <br>. Men jag får fram ett knasigt resultat.

Så här ser koden ut som skriver ut posterna från databasen:

	Response.Write("<div style=margin:10px;padding:10px;background-color:#EEE;><b>")
	Response.Write (rsLinks("Name"))
	Response.Write ("</b><br>")
	Response.Write ("</div>")
	Response.Write ("<div style=margin:10px;padding:10px;background-color:#DDD;>")
	Response.Write ChangeLinks(Replace(rsLinks("Comments"),VbCrLf,"<br>"))
	Response.Write ("</div>")

Så här blir resultatet: http://otech.ath.cx/linksystem

Där ser ni ju hur att om man skriver fler länkar en 1st så blir båda länkarna jättekonstigt länkade. Kolla länkarna där så ser ni.

ChangeLinks-funktionen ser ni lite högre upp i tråden.

Hur löser jag detta? Jag är fast :q

:bire

Medlem sedan juni 200032 967 inlägg
#7

Jag kommer inte fram till din sida, så jag kan inte se hur det ser ut. Men du kan ju alltid prova att byta plats på replacen och kallet till funktionen.

Medlem sedan nov. 20017 144 inlägg
#8

Som sn@bel skrev:
Response.Write Replace(ChangeLinks(rsLinks("Comments")),VbCrLf,"<br>")

Medlem sedan aug. 2002536 inlägg
#9

Testade skriptet.

Det fungerar om det står http://www.link.com men inte med utan http://
(https://www.link.com)

Medlem sedan juni 20019 519 inlägg
#10
objRE.Pattern = "(www.[^ ]*[a-z])|([url]http://)?([/url][^ ]*[a-z])"
text = objRE.Replace(text,"<a href=""http://$1$3"" target=""_blank"">$1$2$3</a>")
Medlem sedan aug. 2002536 inlägg
#11

???

Nu blev ju ALLA ord till länkar...

Medlem sedan juni 20019 519 inlägg
#12

jepp... märkte det... det finns ett färdigt script på wF som gör exakt det du önskar att få ut som resultat... prova bara sök på RegExp och länk så lovar jag att du hittar ett regulärt uttryck som är perfekt för det du önskar.

kollade lite nämare på ditt uttryck... och enligt mig så borde den skriva ut även vid www.

Medlem sedan nov. 20051 317 inlägg
#13

Se där ja :)

Måste varit min funktion som var mindre bra. Hittade den här när jag säkte på regExp!


Function convertLink(ByVal strText)
 Dim mDelimit
 Dim re
 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]+)"
 strText = re.Replace(strText, "<a href=""mailto" & mDelimit & ":$1"">$1</a>")
'Matchar på mailadresser (mönstret är lite kryptiskt, men det handlar om att matcha på något@något.toppdomän, där "något" är giltiga adresstecken. 
'Stoppar dessutom in chr(0) (mDelimit) i ersättningen, så att de utbytta adresserna inte hittas av nedanstående matchning

 re.Pattern = "(http://|https://|ftp://|mailto:)(\S)(\S+)"
 strText = re.Replace(strText, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")
'Matchar på vad som helst som föregås av en protokoll-spec. 
'Stoppar in chr(0) efter första tecknet i själva adressen, så redan utbytta webbadresser inte hittas av nedanstående matchning

 re.Pattern = "(www\.(\S)(\S+))"
 strText = re.Replace(strText, "<a href=""http://$1"" target=""_blank"">$1</a>")
'Matchar alla webbadresser som börjar på "www". 

 strText = Replace(strText, mDelimit, "")
'Rensar bort alla chr(0). 
 convertLink=strText
End Function

Tack tack!!! och åter tack!

nu ska servern vara igång: http://otech.ath.cx/linksystem
testa nu...

jag har en annan fråga också..
gå in på http://otech.ath.cx/linksystem och klicka på "Uppdatera kategorierna". Välj där en kategori... och markera allting i textrutan.. varför läggs det till masssssa mellanslag efter textern där i? :l Kan man styra sånt?

Medlem sedan juni 200032 967 inlägg
#14

varför läggs det till masssssa mellanslag efter textern där i?

Det beror säkerligen på de tabbar du lagt till i källkoden för att indentera </textarea>. Lägg den direkt efter innehållet.

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)