webForumDet fria alternativet

göra länkar klickbara

ASP

19 svar · 1 104 visningar · startad av WebbisNet

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

hur gör jag om denna kod för att göra ex en webadress klickbar

<%
sText = replace(gbMessage,"<","&nbsp;")
sText = replace(gbMessage,">","&nbsp;")
sText = replace(makeHtml(gbMessage),vbCrLf,"<br>")
Response.Write sText
%>
Medlem sedan dec. 19996 721 inlägg
Medlem sedan maj 2000194 inlägg
#3

Denna funktion brukar jag använda med ASP. Funkar bra.

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>")

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

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

 convertLink=strText
End Function
Medlem sedan feb. 20032 027 inlägg
#4

SB skrev:

Denna funktion brukar jag använda med ASP. Funkar bra.

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>")

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

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

 convertLink=strText
End Function

Hur brukar du kalla på den, fungerar inte med

sText = convertLink(showAll("klotterText"))
Medlem sedan juni 200032 967 inlägg
#5

Funktionen heter ju inte strText.

Medlem sedan feb. 20032 027 inlägg
#6

sText = convertLink(showAll("klotterText")) borde ju funka då

Medlem sedan dec. 19996 721 inlägg
#7

Kul att se att den gamla funktionen kunde komma till pass igen :)

Medlem sedan feb. 20032 027 inlägg
#8

hade bara lagt funktionen på fel ställe, funkar fint nu

Medlem sedan juni 2005584 inlägg
#9

emission skrev:

Kul att se att den gamla funktionen kunde komma till pass igen :)

vilken gammal funktion :stud

Medlem sedan dec. 19996 721 inlägg
#10

ptr_lks skrev:

vilken gammal funktion :stud

Om du läser tråden så ser du nog.

Medlem sedan juni 2005584 inlägg
#11

SB skrev:

Denna funktion brukar jag använda med ASP. Funkar bra.

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>")

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

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

 convertLink=strText
End Function

skulle man/vi kunna få lite kodförklaringar?

Medlem sedan dec. 19996 721 inlägg
#12

ptr_lks skrev:

skulle man/vi kunna få lite kodförklaringar?

Visst

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>")
[red]'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[/red]

 re.Pattern = "(http://|https://|ftp://|mailto:)(\S)(\S+)"
 strText = re.Replace(strText, "<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")
[red]'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

[/red]

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

 strText = Replace(strText, mDelimit, "")
[red]'Rensar bort alla chr(0). [/red]
 convertLink=strText
End Function
Medlem sedan juni 2005584 inlägg
#13

Hej har svårt för att använda mig utav koder som jag inte förstår, därför tänkte jag terrorisera er med ytterligare frågor

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>")

  1. parantesen skall gruppera

  2. \.

    = punkt (.)

  3. \w

    träffar vilket ord som helst = [a-zA-Z_0-9]

  4. i enlighet med ovan så borde alltså

    [A-Za-z0-9]

    kunna ersättas med

    \w

  5. vad betyder

    -\w+

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

Enligt webeye

kan man komma åt vilken gruppering man vill med dess nummer och dollartecken

I enlighet med ovan borde:
$1 = första gruppering = http://
$2 = andra gruppering = https://
$3 = 3:e gruppering = ftp://
Om ovanstånde stämmer, så förstår jag itnte hur

<a href=""$1$2" & mDelimit & "$3"" target=""_blank"">$2" & mDelimit & "$3</a>")

Kan appliceras på tex:

Replace av http://www.sl.se till:
<a href="http://www.sl.se" target=""_blank"">sl</a>"

Medlem sedan juni 2005584 inlägg
#14

eller är det så att med en "gruppering" menas i detta fallet allt som finns mellan parantesen?

Medlem sedan dec. 19996 721 inlägg
#15

ptr_lks skrev:

eller är det så att med en "gruppering" menas i detta fallet allt som finns mellan parantesen?

Japp

Medlem sedan juni 2005584 inlägg
#16

men i såfall

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>")

har ju flera paranteser men ändå fungerar $1...
rent intuitivt skulle jag villja använda mig utav:... $1$2$3

Medlem sedan dec. 19996 721 inlägg
#17

$1 är hela första grupperingen, i detta fall hela matchningen

Medlem sedan juni 2005584 inlägg
#18

Just nu skriver jag

Response.Write  Replace(Smilies(rsGbok("Message")), vbCrLf, "<br>" & vbCrLf)

hur skall jag skriva om jag vill använda mig utav convertLink-funktionen?

Medlem sedan dec. 19996 721 inlägg
#19

convertLink gör inget konstigt med strängen, så den kan du applicera när som helst.

Medlem sedan juni 2005584 inlägg
#20

emission skrev:

convertLink gör inget konstigt med strängen, så den kan du applicera när som helst.

Så då kan jag alltså skriva:

Response.Write convetLink(Replace(Smilies(rsGbok("Message")), vbCrLf, "<br />" & vbCrLf))
272 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)