Avatar billede dramsgaard Nybegynder
25. juni 2006 - 15:38 Der er 77 kommentarer og
1 løsning

regExp og <br>

jeg har en funktion som jeg har fundet her på exp, som jeg bruger til at gøre links i en tekst "klikbare"

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    Set objRegExpHTTP2 = New RegExp
    Set objRegExpEMail = New RegExp
   
    objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)"
    objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)"
    objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"
   
    objRegExpHTTP1.Global = True
    objRegExpHTTP2.Global = True
    objRegExpEMail.Global = True
   
    objRegExpHTTP1.IgnoreCase = True
    objRegExpHTTP2.IgnoreCase = True
    objRegExpEMail.IgnoreCase = True
   
    strOutput = objRegExpEMail.Replace(strInput, " <a class='tabletekst3' href='mailto:$1'>$1</a> ")
    strOutput = objRegExpHTTP1.Replace(strOutput, " <a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a> ")
    strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a class='tabletekst3' href='http://$2' target='_blank'>$2</a> ")
   
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")
   
    Set objRegExpHTTP2 = Nothing
    set objRegExpHTTP1 = Nothing
    Set objRegExpEMail = Nothing
   
    LinkString2 = strOutput
  End Function

Når jeg udskriver tekst fra min DB har jeg sat den sammen med flg stump kode:

varTekst=rs("nyhed")
    c1=replace(varTekst,"&lt;fed&gt;","<b>",1,-1,1)   
    c2=replace(c1,"&lt;/fed&gt;","</b>",1,-1,1)
    c3=replace(c2,"&lt;kursiv&gt;","<i>",1,-1,1)
    c4=replace(c3,"&lt;/kursiv&gt;","</i>",1,-1,1)
    c5=Replace(c4, vbCrLf, "<br>")
   
    <%=LinkString2(c5)%>
   
Problemet er at hvis man trykker på enter lige efter man har skrevet et link i en tekst, kommer linket til at se sådan ud: <a href="www.bt.dk<br>/">www.bt.dk</a>

hvad kan man gøre for at løse det problem?? (altså så <br> ikke kommer ind i href)

Håber det er til at forstå...eller så spørg :)
Avatar billede nielle Nybegynder
25. juni 2006 - 15:45 #1
Prøv med:

    objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)\s*"
    objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)\s*"
    objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)\s*"
Avatar billede dramsgaard Nybegynder
25. juni 2006 - 15:51 #2
det ændrer ikke noget desværre
Avatar billede nielle Nybegynder
25. juni 2006 - 16:47 #3
Du skriver at du får:

<a href="www.bt.dk<br>/">www.bt.dk</a>

- men er det i virkeligheden ikke dette her du får:

<a href='www.bt.dk<br>'>www.bt.dk</a>

?
Avatar billede dramsgaard Nybegynder
25. juni 2006 - 17:30 #4
jo du har ret hvis jeg ser i kilden står der:

<a class='tabletekst3' href='http://www.servika.dk<br>' target='_blank'>www.servika.dk<br></a>

men hvis jeg i browseren holder musen henover linket viser den:
http://www.servika.dk<br>/
Avatar billede nielle Nybegynder
25. juni 2006 - 17:38 #5
Den hurtige måde at læse det på er at tilføje disse to nye linjer:

varTekst = rs("nyhed")
c1 = Replace(varTekst, "&lt;fed&gt;", "<b>", 1, -1, 1)
c2 = Replace(c1, "&lt;/fed&gt;", "</b>", 1, -1, 1)
c3 = Replace(c2,"&lt;kursiv&gt;", "<i>", 1, -1, 1)
c4 = Replace(c3,"&lt;/kursiv&gt;", "</i>", 1, -1, 1)
c5 = Replace(c4, vbCrLf, "<br>")
c6 = Replace(c5, "<br>' target", "' target")
c7 = Replace(c5, "<br></a>", "</a>")
   
<%=LinkString2(c7)%>
Avatar billede dramsgaard Nybegynder
25. juni 2006 - 17:57 #6
hmm ja det virker hvis brugeren kun trykker på enter én gang, men problemet er så at hvis brugeren trykker enter to eller flere gange, så kommer <br> stadig ind i href
Avatar billede nielle Nybegynder
25. juni 2006 - 22:23 #7
Det er egentligt lidt mystisk, for jeg kan faktisk slet ikke få din oprindelige kode til at fejle her hos mig. Den fungere korrekt.

Måske er der nogle specielle omstændigheder som resulterer i at den fejler hos dig?
Avatar billede dramsgaard Nybegynder
26. juni 2006 - 13:56 #8
hmm jeg kan prøve at ligge det ud så du kan se hvad der sker

kan det være fordi jeg bruger flg når jeg gemmer det i db'en??
Replace(Trim(server.HTMLEncode(Request.Form("nyhed"))), "'", "''")

altså server.HTMLEncode
Avatar billede dramsgaard Nybegynder
26. juni 2006 - 14:18 #9
jeg har lagt en "hurtig" kopi ud på gofoto.dk/test

hvis man redigerer en af nyhederne og trykker på enter et par gange efter et af linksne kommer fejlen med <br> inde i href
Avatar billede nielle Nybegynder
26. juni 2006 - 18:22 #10
Hmm, jeg tror at det måske er Server.HTMLEncode() som kan finde på at omdanne linjeskift til <br>-tags. Desværre har jeg ikke lige et ASP-system som er oppe og som jeg kan afprøve det på.

Prøv derfor selv med følgende lille demo:

<form>
Skriv noget med nogle linjeskift:<br>
<textarea name="nyhed"></textarea>
<input type="submit">
</form>

Check med vis kilde efter at du har submittet;<br>
<%
Response.Write Server.HTMLEncode(Request.Form("nyhed"))
%>

- og fortæl mog hvad den giver.
Avatar billede dramsgaard Nybegynder
26. juni 2006 - 20:22 #11
når jeg skriver en tekst i ovenstående tekstboks skrives det ens hvad enten htmlencode er slået til eller ej. Teksten skrives bare. Men det er nok fordi at en tekstboks benytter vbCrLf istedet for <br> til linjeskift, og derfor har htmlencode ingen indflydelse.

jeg har prøvet i det oprindelige script at slå htmlencode fra og til men det gør ingen forskel.
Fejlen opstår kun når jeg benytter flg stump kode inden det udskrives:
a8= Replace(varTekst, vbCrLf, "<br>")

og udskriver med:
<%=LinkString2(a8)%>

...men hvis jeg ikke benytter koden får jeg ingen linjeskift i teksten....så det er lidt et problem

har du nogen forslag?
Avatar billede nielle Nybegynder
26. juni 2006 - 20:35 #12
Umiddelbart ville jeg mene at mit allerførste forslag faktisk havde burde jave klarer problemet.

Men du kan jo prøve med denne variant:

objRegExpHTTP1.Pattern = "(http|ftp)(:\/\/[\w\._-]+\.[\w\._-]+\S*)([\r\n]*)"
objRegExpHTTP2.Pattern = "(^|[^\/])(www[^\.\s]?\.[\w\._-]+\.[A-Za-z]{2,3}[\w\S]*)([\r\n]*)"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)([\r\n]*)"
Avatar billede dramsgaard Nybegynder
26. juni 2006 - 21:03 #13
hmmm det virker heller ik desværre
Avatar billede nielle Nybegynder
26. juni 2006 - 21:54 #14
Meget mystisk.

Har du mulighed for at kigge direkte i databasen og se hvordan dine data ser ud som de ligger der?
Avatar billede dramsgaard Nybegynder
26. juni 2006 - 22:03 #15
ja i databasen ud for den post du har oprettet står der:

www.eksperten.dk

...og så er der tre linjer under det (altså ikke nogen tegn, bare linjeskift)
Avatar billede nielle Nybegynder
27. juni 2006 - 18:43 #16
Jeg har en ide om hvad der går galt, men det lader ikke til at det kan løses med de regulære udtryk i ASP.

Her er et bud på en løsning som tager højde for at folk kan skrive mere end et linjeskift:

varTekst = rs("nyhed")
c1 = Replace(varTekst, "&lt;fed&gt;", "<b>", 1, -1, 1)
c2 = Replace(c1, "&lt;/fed&gt;", "</b>", 1, -1, 1)
c3 = Replace(c2,"&lt;kursiv&gt;", "<i>", 1, -1, 1)
c4 = Replace(c3,"&lt;/kursiv&gt;", "</i>", 1, -1, 1)
c5 = Replace(c4, vbCrLf, "<br>")

Do
    prevC5 = c5
    c5 = Replace(c5, "<br>' target", "' target")
    c5 = Replace(c5, "<br></a>", "</a>")
Until c5 = prevC5
   
<%=LinkString2(c5)%>
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 19:01 #17
synes nu ikke det giver den store forskel...du kan ´selv prøve dit seneste bud på gofoto.dk/test  :)
Avatar billede nielle Nybegynder
27. juni 2006 - 19:08 #18
Hmm? Det virkede da hvis der kun var et enkelt linjeskift (25/06-2006 17:57:42). Koden i 27/06-2006 18:43:04 burde bare loope igennem indtil at den havde taget hånd om samtlige linjeskift.
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 19:24 #19
hvis man trykker på enter én gang efter linjeskift så bliver linjeskiftet ikke vist, men hvis man trykker to gange på enter, så bliver det vist som et enkelt linjeskift

....det virker som om loopet ikke rigtig gør noget af en eller anden grund
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 19:28 #20
....men kan man istedet lave det på en helt anden måde, end den jeg benytter??
der må vel være massere af andre websteder der bruger noget lignende...men måske lidt smartere??
Avatar billede nielle Nybegynder
27. juni 2006 - 19:34 #21
Prøv lige med:

Do
    prevC5 = c5
    c5 = Replace(c5, "<br>' target", "' target")
    c5 = Replace(c5, "<br></a>", "</a>")
While c5 <> prevC5
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 19:41 #22
ingen ændring desværre...
har desuden fjernet htmlencode for at være helt sikker på det ikke er noget med det.
så den senste udgave der ligger der ude nu er:

    varTekst = rs("nyhed")   
c1 = Replace(varTekst, "<fed>", "<b>", 1, -1, 1)
c2 = Replace(c1, "</fed>", "</b>", 1, -1, 1)
c3 = Replace(c2,"<kursiv>", "<i>", 1, -1, 1)
c4 = Replace(c3,"</kursiv>", "</i>", 1, -1, 1)
c5 = Replace(c4, vbCrLf, "<br>")

Do
    prevC5 = c5
    c5 = Replace(c5, "<br>' target", "' target")
    c5 = Replace(c5, "<br></a>", "</a>")
loop While c5 <> prevC5
Avatar billede nielle Nybegynder
27. juni 2006 - 19:51 #23
Suk ... har lige opdaget at jeg har læst din kode forkert, og derfor har givet nogle forkerte "løsninger".

Her prøv dette:

varTekst = rs("nyhed")
c1 = Replace(varTekst, "&lt;fed&gt;", "<b>", 1, -1, 1)
c2 = Replace(c1, "&lt;/fed&gt;", "</b>", 1, -1, 1)
c3 = Replace(c2, "&lt;kursiv&gt;", "<i>", 1, -1, 1)
c4 = Replace(c3, "&lt;/kursiv&gt;", "</i>", 1, -1, 1)
c5 = LinkString2(c4)
c6 = Replace(c5, vbCrLf, "<br>")

<%=c6%>
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 19:59 #24
ja det virkede...men nu vil den bare ikke lave linjeskift efter linket i bunden...hvorfor??
Avatar billede nielle Nybegynder
27. juni 2006 - 20:02 #25
Jeg er ikke helt sikker på at jeg forståt hvad det er for et link i bunden du spørgere efter?
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 20:10 #26
tryk på rediger udfor den øverste nyhed "hmm"

når du ser teksten i textarea kan du se at der er trykket på enter et par gange efter linket i "nyheden" så teksten skulle stå et par linjer længere nede....men den vises på samme linje som linket når den udskrives

den ignorere altså linjeskift lige efter et link...af en eller anden grund??
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 20:18 #27
nå jeg har fundet ud af det...jeg satte bare det oprindelige pattern ind i linkstring2 igen...så tror faktisk det virker nu : )
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 20:22 #28
hmmm næ nu er problemet at hvis man trykker på enter 1 gang lige foran et link i teksten så laver den ikke linjeskift....først hvis man trykker på enter to gange får man et enkelt linjeskift....har du et bud på hvorfor?
Avatar billede nielle Nybegynder
27. juni 2006 - 20:39 #29
Ikke umiddelbart... :^|

Må jeg væøre så fræk at spørge om det er en løsning du selv har kodet sammen? Umiddelbart ville jeg nok selv have lavet det på en anden måde.
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 20:45 #30
...hvis du har en bedre måde vil jeg da meget gerne høre den : )

jeg skal nok kaste nogle ekstra point i puljen så : )
Avatar billede nielle Nybegynder
27. juni 2006 - 20:51 #31
Jeg sidder allerede og arbejder på den ;^)
Avatar billede nielle Nybegynder
27. juni 2006 - 21:28 #32
Vi kan jo starte med denne her:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]*)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "\b(?<!http://)(www\.[^\s]*)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 22:04 #33
der er en fejl i den:

Microsoft VBScript runtime error '800a1399'
Syntax error in regular expression

/test/Default.asp, line 61 :

strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")

...men hvorfor er den bedre end den gamle funktion som jeg mener eageleye har bikset sammen?
Avatar billede nielle Nybegynder
27. juni 2006 - 22:31 #34
Ah ja, VB Script kan ikke håndtere negativ lookbehind.

Ret til dette:

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^/])(www\.[^\s]*)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1<a class='tabletekst3' href='http://$2' target='_blank'>$2</a>")
    End With
    Set objRegExpHTTP2 = Nothing


> ...men hvorfor er den bedre end den gamle funktion

Det er det vel heller ikke nødvendigvis. Det er jo lidt en subjektiv vurdering.

Min mening er dog at det er mere kompakt og dermed lettere at læse. Hvis eageleye kommer forbi, så kan han måske argumentere hvorfor hans er bedere.
Avatar billede dramsgaard Nybegynder
27. juni 2006 - 22:49 #35
den virker nu...men den har en mangel i forhold til den gamle... hvis man f.eks. skriver et link og f.eks. sætter et komma efter, tager den kommaet med i linket.

...men havde du en bedre måde at lave alt det der formattering af teksten med fed osv? :)
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 12:49 #36
nå har du givet op nielle? :)
Avatar billede nielle Nybegynder
29. juni 2006 - 14:48 #37
Nej da, har bare været hængt temmeligt meget op på andet i de foregående par dage. Regnede med at tage den her i aften. C-ya. :^)
Avatar billede nielle Nybegynder
29. juni 2006 - 17:26 #38
Kommaproblemet:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]+)\.[a-z]{2,}"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "\b(?<!http://)(www\.[^\s]+)\.[a-z]{2,}"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede nielle Nybegynder
29. juni 2006 - 17:27 #39
Liiiiige lidt for hurtig!

Sådan:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]+\.[a-z]{2,})"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "\b(?<!http://)(www\.[^\s]+\.[a-z]{2,})"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede nielle Nybegynder
29. juni 2006 - 17:34 #40
Formatering med fed og kursiv. Well, din kode virker jo så hvorfor lave den om?

Men det kan da sagtens laves med regulære udtryk:

varTekst = rs("nyhed")

' Var dette:
' c1=replace(varTekst,"&lt;fed&gt;","<b>",1,-1,1)   
' c2=replace(c1,"&lt;/fed&gt;","</b>",1,-1,1)

Set objRegExpHTTP1 = New RegExp
With objRegExpFed
    .Pattern = "&lt;fed&gt;(.+?)&lt;/fed&gt;"
    .Global = True
    .IgnoreCase = True
    varTekst = .Replace(varTekst, "<b>$1</b>")
End With
Set objRegExpFed = Nothing

' Var dette:
' c3=replace(c2,"&lt;kursiv&gt;","<i>",1,-1,1)
' c4=replace(c3,"&lt;/kursiv&gt;","</i>",1,-1,1)

Set objRegExpHTTP1 = New RegExp
With objRegExpKursiv
    .Pattern = "&lt;kursiv&gt;(.+?)&lt;/kursiv&gt;"
    .Global = True
    .IgnoreCase = True
    varTekst = .Replace(varTekst, "<i>$1</i>")
End With
Set objRegExpKursiv = Nothing

varTekst = Replace(varTekst, vbCrLf, "<br>")
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 20:22 #41
Den siger der er "syntax error in regular expression" i linkString funktionen i denne linie (fra objRegExpHTTP2):

strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")


hvad er det egentlig følgende gør i den oprindelige linkString funktion:
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")
Avatar billede nielle Nybegynder
29. juni 2006 - 20:32 #42
Kom åbenbart til at tage udgangspunkt i den version af koden som ikke virkede:

Sådan:

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^/])(www\.[^\s]+\.[a-z]{2,})"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing
Avatar billede nielle Nybegynder
29. juni 2006 - 20:42 #43
29/06-2006 20:22:19

> hvad er det egentlig følgende gør i den oprindelige linkString funktion:

Denne del:

    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")

- leder efter en "<br>", eller et af tegnene "," "." ")" "]" "}", efterfulgt af "'>" og erstatter det med "'>" - dvs. den fjerner simpelthen den første del.

Denne del:

    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")

- leder efter en "<br>", eller et af tegnene "," "." ")" "]" "}", efterfulgt af "' target=" og erstatter det med "' target=" - dvs. den fjerner det foran.

Denne del:

    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")

- gør det samme som ovenfor, denne gang bare med "</a>" til sidst.

Effekten af disse 6 linjer kode skulle vist være at rydde op efter de tilfælde hvor den første matchning tog for meget med.

PS: Min version af koden prøver at lade være med at tage for meget med til at starte med.
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 20:54 #44
jo men jeg tænkte på om det ikke er derfor at den tog <br> med ind i href til at starte med?

lige en sidste lille ting til din regExp:
kan du lave den sådan så den ikke laver et link hvis der er mindre end eller mere end tre w?
men den skal stadig acceptere f.eks www2.dr.dk
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 20:57 #45
den har os' problemer med link med querystrings i
f.eks: http://www.ok.com/hest.asp?dr=dk&ec
- her tager den ikke linket med efter "?"
Avatar billede nielle Nybegynder
29. juni 2006 - 21:01 #46
29/06-2006 20:54:33> Formålet med den kode var lige det omvendte - at få fjernet <br>.
Avatar billede nielle Nybegynder
29. juni 2006 - 21:17 #47
Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]+\.[a-z]{2,}(?:\?[a-z0-9%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^/])(www\.[^\s]+\.[a-z]{2,}(?:\?[a-z0-9%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 21:26 #48
heh nu sætter den ";" ind efter "&" og medtager ikke linket efter "&"

den medtager heller ikke den del af af et link der er efter "#"
Avatar billede nielle Nybegynder
29. juni 2006 - 21:36 #49
Glemte #-tegnet... Sådan:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]+\.[a-z]{2,}(?:\?[a-z0-9%&+=#]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^/])(www\.[^\s]+\.[a-z]{2,}(?:\?[a-z0-9%&+=#]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function


> heh nu sætter den ";" ind efter "&"

Forståer jeg ikke. Prøv lige at forklare.


> og medtager ikke linket efter "&"

Det burde den nu ellers. Kan du give et eksempel hvor det fejler?
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 22:02 #50
# tegnet virker vidst stadig ikke

du kan se fejlene på gofoto.dk/test i den første post

jeg har lagt din seneste version op, så du kan jo selv prøve at skrive et par adresser : )
Avatar billede nielle Nybegynder
29. juni 2006 - 22:16 #51
Det var vist en kortslutning ;^)

Sådan, dette burde virke bedre:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[^\s]+\.[a-z]{2,}(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^/])(www\.[^\s]+\.[a-z]{2,}(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 22:50 #52
ja nu virker # tegnet

men & tegnet virker stadig ikke
links der starter med www. bliver slet ikke vist mere
http://wwwwww.dr.dk bliver til:  w' target='_blank'>http://ww
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 22:56 #53
man kan stadig oprette med mere eller mindre end WWW - altså f.eks: w.dr.dk eller wwwt.dr.dk (men det må gerne kunne se sådan ud ex: www2.dr.dk)
links bliver klikbare selvom der mere end to // efter http - altså: http:///www.dr.dk

...det sidste her er ikke så vigtigt....men det ville gøre det perfekt : )
Avatar billede nielle Nybegynder
29. juni 2006 - 22:58 #54
Jeg har ingen anelse om hvorfor

...&ccc=ddd&amp;eee=fff

bliver til

;ccc=ddd&amp;eee=fff

- men jeg kan fortælle at det intet som helt har med min kode at gøre. Der er intet i den som kan indsætte et ;-tegn. Du må have noget mere kode et eller andet sted som haver ged i den.
Avatar billede nielle Nybegynder
29. juni 2006 - 23:02 #55
Jeg kan ikke klare sådan noget som "w.dr.dk" for dig, måske sådan noget som "wwwt.dr.dk", men så er spørgsmålet hvornår noget uden et http:// foran er et link eller hvornår nogen bare har glemt at skrive et mellemtum efter et punktum.hmm?

Den med "http:///www.dr.dk" klares med dette:

Function LinkString2(strInput)
    Set objRegExpHTTP1 = New RegExp
    With objRegExpHTTP1
        .Pattern = "\b(https?|ftp)(://[\w.-]+\.[a-z]{2,}(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "<a class='tabletekst3' href='$1$2' target='_blank'>$1$2</a>")
    End With
    Set objRegExpHTTP1 = Nothing

    Set objRegExpHTTP2 = New RegExp
    With objRegExpHTTP2
        .Pattern = "(^|[^\w/])(www\.[\w.-]+\.[a-z]{2,}(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='http://$1' target='_blank'>$1</a>")
    End With
    Set objRegExpHTTP2 = Nothing

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 23:16 #56
hmm det må jeg lige se på

men links der starter med www. vises ikke mere!! altså www.dr.dk det er kun hvis der kommer http:// foran det vises
Avatar billede dramsgaard Nybegynder
29. juni 2006 - 23:22 #57
selv når teksten går direkte fra databasen til funktionen vil den ikke lave linket ordentligt når det indeholder & tegnet

så kan ikke rigtig se hvad der skulle påvirke det af min kode desværre
Avatar billede dramsgaard Nybegynder
30. juni 2006 - 00:13 #58
hmmm det er nok fordi & tegnet bliver til &amp; når det bliver htmlencoded...
Avatar billede nielle Nybegynder
30. juni 2006 - 07:01 #59
Det lyder som en sandsynlig forklaring - i hvertfald på hvor &-tegnet kommer fra. Jeg undre mig stadig lidt over hvorfor det foran så forsvinder...

Du kan jo i hvertfald starte med at replace &amp; med & før at LinkString2() kaldes.
Avatar billede dramsgaard Nybegynder
30. juni 2006 - 10:28 #60
ja nu virker & tegnet
men den vil ikke vise links der starter med www. og den laver ikke links klikbare efter en / i linket.

hvis jeg fjerner flg fra den oprindelige LinkString funktion virker den faktisk uden at sætte <br> ind i href:

    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])('>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(' target=)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2")
    objRegExpHTTP2.Pattern = "(<br>|[,.)\]\}])(</a>)"
    strOutput = objRegExpHTTP2.Replace(strOutput, "$2$1")
...men den medtager et komma i linket hvis det står lige efter, hvordan skal pattern se ud for at den ikke gør det (altså i den oprindelige linkString funktion)?
Avatar billede nielle Nybegynder
30. juni 2006 - 22:47 #61
> hvis jeg fjerner flg fra den oprindelige LinkString funktion virker den faktisk uden at sætte <br> ind i href:

Meget underligt... Som sagt, 29/06-2006 20:42:59, så gør de faktisk det at de fjerner "<br>"er fra koden. Hvis du derfor fjerner dem, så burde der faktisk komme flere "<br>"er - ikke færre.

> ...men den medtager et komma i linket hvis det står lige efter, hvordan skal pattern se ud for at den ikke gør det (altså i den oprindelige linkString funktion)?

Ja det gør den, for en af funktionerne af koden er netop at fjerne vildfarne ,'er og andre lignende tegn.

Egentlig var det en uheldig løsning, for den slettede simpelthen de ,'er og .'er helt. Men dem som poster hos dig havde jo sat de tegn der med et formål.

.oOo.

Når jeg nu kigger på kodeeksemplerne fra i går kan jeg se massere af små fejl hist og her. Desværre kan små fejl have stor betydning. Derfor skal man heller ikke arbejde med regex'er når man er træt. Jeg må have været temmeligt træt i går ... beklager og undskylder din ulejlighed! :^|

Jeg synes imidlertid ikke at vi skal smide mine forsøg helt væk og gå tilbage til det du startede med. Der er faktisk også fejl i det, og desuden har du nævnt nogle ønsker undervejs som det heller ikke kan opfylde.

.oOo.

I mellemtiden har jeg så langt hovedet i blød og jeg har nu en løsning som bl.a. kan klare:

    w.dr.dk, wwwt.dr.dk og www2.dr.dk

Den kan også klare links som starter med:

    https://...

Den kan klare dette:

    http://www.eksperten.dk/spm/717420

Den kan klare sådan noget som dette:

    "ifølge DMI's url (www.dmi.dk) vil det blive rigtigt godt vejr imorgen"

- hvor den oprindelige løsning simpelthen slettede parenteserne.

Den kan klare . og , og ! og lignende bag et url. De bliver ikke slettet, men de kommer heller ikke indenfor i urlet. De står simpelthen på deres rigtige plads i teksten.

Og selvfølgelig kan den klare # og ? og & i et url.

Alt i alt synes jeg at den er meget mere alsidig end den oprindelige løsning.

Der er ikke nogen garanti for at der ikke stadig er fejl, men lad os kigge på dem en ad gangen:
Avatar billede nielle Nybegynder
30. juni 2006 - 22:47 #62
Function LinkString2(strInput)
    ' Find *alt* hvad der på nogen måde ligner et url og sæt "http://" foran:

    Set trin1 = New RegExp
    With trin1
        .Pattern = "((?:[\w-]+\.){2,}[a-z]{2,}(:?/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "http://$1")
    End With
    Set trin1 = Nothing

    ' Fjern det ekstra "http://" fra de steder hvor der nu er dobbelt:

    Set trin2 = New RegExp
    With trin2
        .Pattern = "((?:https?|ftp)://)http://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin2 = Nothing

    ' Lav et link ud af det:

    Set trin3 = New RegExp
    With trin3
        .Pattern = "((?:https?|ftp)://(?:[\w-]+\.){2,}[a-z]{2,}(:?/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='$1' target='_blank'>$1</a>")
    End With
    Set trin3 = Nothing

    ' Lav mails om til links:

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede dramsgaard Nybegynder
30. juni 2006 - 23:59 #63
hej nielle > tak for det nye forslag. jeg har lagt din nye version ud på gofoto.dk/test

som du kan se er den ikke helt perfekt endnu :)
http://www.ok.com/hest.asp?dr=dk&ec  - laver kun link hentil punktum, resten er ikke klikbart

http://dr.dk  - laver den ikke til link.

hvis man har skrevet http:// forkert lader den det stå, og sætter det klikbare link bagefter  - det ser bare lidt sjovt ud, men det betyder ik så meget

...ellers ser det godt ud :)
Avatar billede nielle Nybegynder
01. juli 2006 - 08:11 #64
Nedenstående klarer også:

    http://www.ok.com/hest.asp?dr=dk&ec - jeg ved ikke hvordan jeg kunne glemme den :^|

- og:

    http://dr.dk


Function LinkString2(strInput)
    ' Find *alt* hvad der på nogen måde ligner et url og sæt "http://" foran:

    Set trin1 = New RegExp
    With trin1
        .Pattern = "((?:[\w-]+\.){2,}[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "http://$1")
    End With
    Set trin1 = Nothing

    ' Fjern det ekstra "http://" fra de steder hvor der nu er dobbelt:

    Set trin2 = New RegExp
    With trin2
        .Pattern = "((?:https?|ftp)://)http://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin2 = Nothing

    ' Lav et link ud af det:

    Set trin3 = New RegExp
    With trin3
        .Pattern = "((?:https?|ftp)://(?:[\w-]+\.)+[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='$1' target='_blank'>$1</a>")
    End With
    Set trin3 = Nothing

    ' Lav mails om til links:

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede nielle Nybegynder
01. juli 2006 - 08:11 #65
... men hvad så med:

    dr.dk eller eksperten.dk

- skal den også lave links ud af dem? I min kode genkender jeg urls på at der minimum er 2 punktummer:

    www.eksperten.dk

- og den klare fint de situationer hvor folk simpelthen har glemt et mellemrum efter et punktum.Som dette eksempel viser.De ville jo blive lavet om til klikbare "ting" hvis jeg slækkede på kravene og kun krævede et enkelt punktum.På den anden side sker det vel ikke så tit, og derfor kan nogle enkelte svipsere måske tolereres... Hvad synes du?

Den sidste ting, den med at folk staver http forkert, er mere tricky end jeg havde regnet med...
Avatar billede dramsgaard Nybegynder
01. juli 2006 - 10:35 #66
Hejsa det ser godt ud nu : )

Den skal ikke lave links ud af dr.dk

Det eneste "pilleri" der er, er at den måske ikke burde lave links ud af eks.  wwwet.test.dk
og når http:// bliver stavet forkert ser det lidt sjovt ud.

Men det er jo rent "Gucci" ting : )

så bare smid et svar Nielle
Avatar billede nielle Nybegynder
01. juli 2006 - 10:42 #67
Hvorfor bør den ikke lave link ud af wwwet.test.dk? Hvad er det afgørende kriterie når den nu samtidig skal kunne lave links af w.dr.dk, wwwt.dr.dk og www2.dr.dk?
Avatar billede dramsgaard Nybegynder
01. juli 2006 - 11:00 #68
det har IKKE være meningen at den skulle kunne lave link af w.dr.dk eller wwwt.dr.dk eller wwwwwww.dr.dk men gerne www2.dr.dk (altså med et tal)
...kan godt være jeg ikke har skrevet det helt tydeligt før

troede bare ik det var muligt helt at undgå :)
Avatar billede nielle Nybegynder
01. juli 2006 - 11:06 #69
Ok, det kan sagtens fikses sådan. :^)

Men, inden at jeg gør det (og det bliver i øvrigt først i morgen), vil jeg gerne påpege at det bliver mere og mere almindeligt at url's ikke nødvendigvis starter med www. Så er du helt sikker på at du ønsker den afgrænsning?
Avatar billede dramsgaard Nybegynder
01. juli 2006 - 12:30 #70
altså du må da gerne lave det, men det er ikke en nødvendighed : )

tænkte bare at det måske kunne give nogle komplikationer. Ex. hvis man glemmer et mellemrum efter et punktum i en tekst:

Hej bla bla.De nye bla.......

Så vil den vel fortolke bla.De som et link, hvilket ikke vil være så godt.
...så tror måske det vil blive det bedste resultat hvis den kun fortolker tekst der starter met www. , http:// , http:// eller ftp: som et link
Avatar billede nielle Nybegynder
02. juli 2006 - 19:14 #71
Vi må vist nok hellere holde os til kravet om at der skal være minimum 2 punktummer. I hvertfald kan jeg ikke stille med en løsning som sørger for ikke at linkificere "Hej bla bla.De nye bla......." samtidig med at den laver et link ud af "eksperten.dk" og lignende.

Det sidste irritationsmoment, den med de forkert svaede "httx://" foran linkene, kan så vidt jeg har kunne afprøve klares med denne:

Function LinkString2(strInput)
    ' Find *alt* hvad der på nogen måde ligner et url og sæt "http://" foran:

    Set trin1 = New RegExp
    With trin1
        .Pattern = "((?:[\w-]+\.){2,}[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "http://$1")
    End With
    Set trin1 = Nothing

    ' Fjern det ekstra "http://" fra de steder hvor der nu er dobbelt:

    Set trin2 = New RegExp
    With trin2
        .Pattern = "((?:https?|ftp)://)http://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin2 = Nothing

    ' Lav et link ud af det:

    Set trin3 = New RegExp
    With trin3
        .Pattern = "((?:https?|ftp)://(?:[\w-]+\.)+[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='$1' target='_blank'>$1</a>")
    End With
    Set trin3 = Nothing

    ' Fjern alle forekomster af "3-5 bogstaver + ://" som står uden for et link:

    Set trin4 = New RegExp
    With trin4
        .Pattern = "(^| )[a-z]{3,5}://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin4 = Nothing

    ' Lav mails om til links:

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function
Avatar billede nielle Nybegynder
02. juli 2006 - 19:36 #72
Personligt ville jeg foretrække at man laver links ud af w.dr.dk, wwwt.dr.dk, wwwwwww.dr.dk og www2.dr.dk. De kunne nemlig sagtens være fuldt lovlige links.

Men hvis du vil have en løsning som ikke laver linkes if af w.dr.dk, wwwt.dr.dk eller wwwwwww.dr.dk, men gør det med www2.dr.dk og www.dr.dk så kunne løsninge se sådan her ud:

Function LinkString2(strInput)
    ' Find *alt* hvad der på nogen måde ligner et url og sæt "http://" foran:

    Set trin1 = New RegExp
    With trin1
        .Pattern = "(^| )((?:www\d?\.)(?:[\w-]+\.)+[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strInput, "$1http://$2")
    End With
    Set trin1 = Nothing

    ' Fjern det ekstra "http://" fra de steder hvor der nu er dobbelt:

    Set trin2 = New RegExp
    With trin2
        .Pattern = "((?:https?|ftp)://)http://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin2 = Nothing

    ' Lav et link ud af det:

    Set trin3 = New RegExp
    With trin3
        .Pattern = "((?:https?|ftp)://(?:[\w-]+\.)+[a-z]{2,}(?:/[\w-]+\.[\w-]+|/[\w-]*)*(?:#\w+)?(?:\?[\w%&+=]+)?)"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='$1' target='_blank'>$1</a>")
    End With
    Set trin3 = Nothing

    ' Fjern alle forekomster af "3-5 bogstaver + ://" som står uden for et link:

    Set trin4 = New RegExp
    With trin4
        .Pattern = "(^| )[a-z]{3,5}://"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "$1")
    End With
    Set trin4 = Nothing

    ' Lav mails om til links:

    Set objRegExpEMail = New RegExp
    With objRegExpEMail
        .Pattern = "\b([a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,})\b"
        .Global = True
        .IgnoreCase = True
        strOutput = .Replace(strOutput, "<a class='tabletekst3' href='mailto:$1'>$1</a>")
    End With
    Set objRegExpEMail = Nothing

    LinkString2 = strOutput
End Function

Men som sagt foretrækker jeg løsningen fra 02/07-2006 19:14:11.
Avatar billede dramsgaard Nybegynder
02. juli 2006 - 20:22 #73
det ser ud til at virke meget godt : )

smid et svar Nielle så får du point
Avatar billede dramsgaard Nybegynder
02. juli 2006 - 20:25 #74
jeg tænkte på i din sidste version kan man lave sådan så den ikke skriver http:// foran et link en bruger har skrevet hvis det ikke er skrevet i forvejen, eller vil det være besværligt at lave?
Avatar billede nielle Nybegynder
02. juli 2006 - 20:41 #75
Mener du at "snakke-snakke-snakke www.eksperten.dk snakke-snakke-snakke" skal laves om til:

<a class='tabletekst3' href='http://www.eksperten.dk' target='_blank'>www.eksperten.dk</a>

- og ikke, som nu, til:

<a class='tabletekst3' href='http://www.eksperten.dk' target='_blank'>http://www.eksperten.dk</a>

?

Hvis "ja", så må jeg indrømme at det faktisk er lidt vanskeligt. Det kræver i hvert fald en stortset helt omskrevet løsning (i modsætning til bare en lille ændring). Jeg tror dog nok at det kan lade sig gøre.

Men, hvis du er meget interesseret, vil jeg da gerne gøre forsøget?
Avatar billede dramsgaard Nybegynder
02. juli 2006 - 20:52 #76
Ja det var det jeg mente.
hvis det er besværligt behøver du ikke...det virker jo fint nu : )
Avatar billede nielle Nybegynder
02. juli 2006 - 21:21 #77
Ok, så får du et svar :^)

Men det kan godt tænkes at der pludselig en af dagen dukker et nyt stykke kode op. :^)
Avatar billede dramsgaard Nybegynder
02. juli 2006 - 21:26 #78
det er du meget velkommen til : )

...lyder som om du er blevet lidt grebet af det ;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester