---
title: "Problem med att skapa länk med regexp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/130714-problem-med-att-skapa-länk-med-regexp"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "joel_joel88"
published: "2005-06-28T20:01:04.000Z"
updated: "2005-07-01T11:45:35.000Z"
replies: 38
views: 892
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/130714-problem-med-att-skapa-länk-med-regexp"
---

# Problem med att skapa länk med regexp

_Sida 1 av 2._

## #1 — joel_joel88, 2005-06-28T20:01Z

Hej!

har denna kod för att skapa länkar från en adress, fast det fungerar inte, halva länkkoden skrivs ut.
Vad är fel?

> **Så här skrivs det ut skrev:**
>
> href="www.testar.nu" target="\_blank"\>

```
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
strtxt = Server.HTMLEncode(strtxt)
strTxt = trim(request("inlagg"))

objRegExp.Pattern = "(www\.(\S)(\S+))"
  strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">")

objRegExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
   strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">")
```

Permalänk: https://www.webforum.nu/p/130714

## #2 — SannyW, 2005-06-28T20:54Z

Vet inte riktigt hur det ser ut när du hämtar det från databasen, men om det står typ **www.testar.nu** så skall det funkar om du ändrar detta.

```
  strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">$1</a>")
```

 

Som det är tidigare avslutar du inte med sluttagg.

Permalänk: https://www.webforum.nu/p/1637962

## #3 — joel_joel88, 2005-06-28T21:20Z

Fungerar inte än. Det fungerar att t.ex skriva <https://www.test.nu>
och <http://www.test.nu,> fast så fort man skriver båda i samma text, då fungerar det inte, då skrivs det som jag sa ut.

Permalänk: https://www.webforum.nu/p/1637976

## #4 — joel_joel88, 2005-06-28T21:31Z

När jag skriver ut flera adresser så blir det som sagt fel. Jag tog då visa källa och kollade hur det blev...

```
<a href="http://<a" target="_blank">[url]http://[/url]<a></a> href="www.testar.nu" target="_blank">[url]www.testar.nu[/url]</a
```

knepigt va?

Permalänk: https://www.webforum.nu/p/1637983

## #5 — SannyW, 2005-06-28T23:43Z

Har suttit och sökt å lekt lite, kom fram till följande funktion. Enligt vad jag kan komma fram till så funkar den som den skall:

```
<%
Function ConvertLink(strText)
  strText = Replace(Server.HTMLEncode(strText),vbCrLf,"<br>")
  Set objRegExp = New RegExp
  objRegExp.Global = True
  objRegExp.IgnoreCase = True
	
  ' Reagerar på.. www.webforum.nu
  If Left(Trim(strText), 3) = "www" Then
      objRegExp.Pattern = "(www\.(\S)(\S+))"
      strText = objRegExp.Replace(strText, "<a href=""http://$1"" target=""_blank"" title=""Besök $1"">$1</a>")
  
  'Reagerar på.. [ url]http://www.webforum.nu[/url] 
  elseif Left(strText, 12) = "[url]http://" then
      strLink = Split(strText, "//")
      Link = Replace(strLink(1), "[/url]", "")	
    objRegExp.Pattern = "\[url\](.*?)\[\/url\]"
    strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök "&Link&""">"&Link&"</a>")

  'Reagerar på.. [ url=http://www.webforum.nu]Länktext[/url]
  elseif Left(strText, 5) = "[url=" then
     objRegExp.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
     strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök $2"">$2</a>")

  'Reagerar på.. http://www.webforum.nu
  else
    objRegExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
    If Left(Trim(strText), 7) = "http://" then
      strLink = Split(strText, "//")
      Link = strLink(1)	

      strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök "&Link&""">"&Link&"</a>")
    else if Left(Trim(strText), 7) = "mailto:" then
      TempLink = split(strText, ":")
      TempMailName = split(TempLink(1), "@")
      TempName = split(TempMailName(0), ".")

      FirstName= TempName(0)
      LastName = TempName(1)

      MailName = UCase(Left(FirstName,1)) & LCase(Mid(FirstName,2)) &"&nbsp;"& UCase(Left(LastName,1)) & LCase(Mid(LastName,2))

      strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Skicka ett mail till "&MailName&""">"&MailName&"</a>")
    end if
  end if
  end if
ConvertLink = strText
End Function

response.write  ConvertLink("http://www.webforum.nu")
%>
```

Du skall ersätta:

```
response.write  ConvertLink("www.webforum.nu")
```

med din RS från databasen

```
response.write  ConvertLink(request("inlagg"))
```

/r
Finns lite mellanslag på url på beskrivningarna, texten såg ut som en stor länk. Lite trött och fick inte till inlägget riktigt. :OO

Permalänk: https://www.webforum.nu/p/1638006

## #6 — SannyW, 2005-06-29T01:12Z

Att skriva ut flera adress i funktionen som jag gjort kommer inte att fungera heller kom jag på.

Problemet som uppkommer är att båda dina pattern uppfylls och de ändras. Om du kan se till att samtliga länkar har samma format så funkar nedanstående, problem uppstår som sagt vid olika.

```
<%
strTxt = "www.testar.nu www.testar.nu"
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
strtxt = Server.HTMLEncode(strtxt)

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

response.write strTxt
%>
```

Permalänk: https://www.webforum.nu/p/1638007

## #7 — joel_joel88, 2005-06-29T09:28Z

Hur kommer det säg att det bara fungerar om man har samma format? Måste ju fungera på något sätt, fast du kanske inte vet det.

Tack för hjälpen trotts allt.

Permalänk: https://www.webforum.nu/p/1638085

## #8 — joel_joel88, 2005-06-29T09:30Z

Man kan väl fixa så att dom har samma format med replace.

t.ex om man vill att det ska bara vara <https://www.hej.nu>

då tar man 

```
strTxt = Replace(strTxt, "http://", "")
```

Det bör fungera, fast jag vill fortfarande att det ska fungera om man skriver olika, jag är stönig :)

Permalänk: https://www.webforum.nu/p/1638086

## #9 — joel_joel88, 2005-06-29T20:04Z

Någon som vet?

Permalänk: https://www.webforum.nu/p/1638295

## #10 — SannyW, 2005-06-29T21:31Z

```
<%
strTxt = "www.testar.nu [url]http://www.testar.nu[/url] [url]http://www.testar.nu[/url]"
strTxt = Server.HTMLEncode(strTxt)
strTxt = Replace((strTxt),vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
'fixa länkar och e-postadresser
objRegExp.Pattern = "([url]www.[/url][^ ]*[a-z])|([url]http://[/url][^ ]*[a-z])"
strTxt = objRegExp.Replace(strTxt,"<a href=""$1$2"" target=""_blank"">$1$2</a>")

'buggfixningar
strTxt = Replace(strTxt,"""www","""http://www")
strTxt = Replace(strTxt,"""http://www""","""www""")
'slut

Set RegExp = Nothing

Response.Write strTxt
%>
```

Permalänk: https://www.webforum.nu/p/1638331

## #11 — joel_joel88, 2005-06-29T21:43Z

Tack så mycket SannyW, du är en pärla :)

en ska till bara, varför har du flera appostrofer i 
strTxt = Replace(strTxt,"""www","""http://www")?

Permalänk: https://www.webforum.nu/p/1638333

## #12 — joel_joel88, 2005-06-29T22:03Z

hmm, allt fungerar bra utom en grejj, när t.ex ska skapa en länk som denna

<http://www.silentwings.no/article/articleview/55/1/9/>

så blir det bara en länk fram till / efter articleview. Vad beror detta på?

Permalänk: https://www.webforum.nu/p/1638336

## #13 — SannyW, 2005-06-29T22:11Z

Måste gå med på att släppa igenom siffror

ändra till detta:

```
objRegExp.Pattern = "([url]www.[/url][^ ]*[\w])|([url]http://[/url][^ ]*[\w])"
```

Angående det med appostrofer så har jag inget riktigt svar, fick hjälp av en tråd på forumet. Och det som jag kan se är att det beror på href som blir fel. Snutt problem....

Permalänk: https://www.webforum.nu/p/1638339

## #14 — joel_joel88, 2005-06-29T22:13Z

Jag gjorde det, kollade på webeye.nu. Såg det och satte dit det. Men tack för hjälpen :)

Permalänk: https://www.webforum.nu/p/1638340

## #15 — joel_joel88, 2005-06-29T22:23Z

Fan, ett problem till.

Om jag skriver flera länkar så blir alla som en länkar under varandra. Det blir t.ex så här. Ska det vara något som känner av att det måste vara hela "texter" för att skapa en länk? Altså inget radbyte, eller mellanslag.

<http://www.test.nu>\<br\><https://www.test.nu>\<br\><http://test.nu>

Permalänk: https://www.webforum.nu/p/1638341

## #16 — SannyW, 2005-06-29T22:43Z

:) Kanske beror det på "små timmarna" eller bara på mig. Men jag är INTE riktigt med på vad du menar.

Permalänk: https://www.webforum.nu/p/1638348

## #17 — joel_joel88, 2005-06-29T22:47Z

Altså om jag skriver flera länkar, så blir alla en och samma. 
Klickar man på en så har alla adresser lagt ihop sig. Om man även har radbrytning så har \<br\> lagts till i adressen.

Permalänk: https://www.webforum.nu/p/1638349

## #18 — SannyW, 2005-06-29T22:53Z

Hmm, om jag förstår rätt nu så har du skrivit:

<http://www.test.nu>\<br\><https://www.test.nu>\<br\><http://test.nu>

då är det inte konstigt att det blir en och samma länk. Finns det någon anledning att använda \<br\> på det viset?

Permalänk: https://www.webforum.nu/p/1638351

## #19 — joel_joel88, 2005-06-29T22:54Z

Det är så att jag har ett forum, där så har jag testat och gjort ett inlägg. Då har jag skrivit så här

> <http://www.test.nu>
> <https://www.test.nu>
> <http://www.test.nu>

Det blir ju \<br\> eftersom jag har en replace som byter ut Vbcrlf till \<br\>.

Permalänk: https://www.webforum.nu/p/1638352

## #20 — SannyW, 2005-06-29T23:05Z

```
<%
strTxt = "www.testar.nu<br>[url]http://www.testar.nu[/url] [url]http://www.silentwings.no/article/articleview/55/1/9/[/url]"
strTxt = Replace(strTxt,"<br>",vbCrLf)
strTxt = Server.HTMLEncode(strTxt)
strTxt = Replace(strTxt,vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true

'fixa länkar och e-postadresser
objRegExp.Pattern = "([url]www.[/url][^ ]*[\w])|([url]http://[/url][^ ]*[\w])"
'strTxt = objRegExp.Replace(strTxt,"<a href=""$1$2"" target=""_blank"">$1$2</a>")
strTxt = objRegExp.Replace(strTxt,"<a href='$1$2' target='_blank'>$1$2</a>")

'buggfixningar
strTxt = Replace(strTxt,"'www","'http://www")
strTxt = Replace(strTxt,"''http://www","''www")
'slut

Set RegExp = Nothing

printRows = Split(strTxt, "<br>")

For i = 0 To Ubound(printRows)
   Response.Write printRows(i)
   Response.Write "<br>"
Next

%>
```

Permalänk: https://www.webforum.nu/p/1638355

---

Tråden på webben: https://www.webforum.nu/amne/asp/130714-problem-med-att-skapa-länk-med-regexp  
Nästa sida: https://www.webforum.nu/amne/asp/130714-problem-med-att-skapa-länk-med-regexp/page2.md
