---
title: "objRegExp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/128060-objregexp"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Troll"
published: "2005-05-12T11:29:10.000Z"
updated: "2005-05-12T18:49:38.000Z"
replies: 19
views: 443
page: 1
pages: 1
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/128060-objregexp"
---

# objRegExp

## #1 — Troll, 2005-05-12T11:29Z

Hejsan!

jag har sökt runt på forumet och hittat olika trådar som på olika sätt visar hur man kortar ner länkar som är för långa men jag förstår verkligen inte hur jag ska klämma in det i koden för att få det att fungera.

Jag antar att jag ska köra en If-sats och se om länken är X-antal tecken långt och om det är över angivet tal så ska den kortas ner men jag har problem med att klura ut hur jag bara ska kolla längden på länken och inte hela texten.

Så frågan är då hur jag med koden nedan ska kunna korta ner länkarna i texten till tex: "http://www.akjsfg...jhgs.com" som det är här på WF eller bara "http://www.askfhlkasjdhf..."

Ja ni fattar säkert. jag ber om ursäkt för att jag postar en tråd som säkerligen besvarats många gånger men jag förstår verkligen inte hur jag ska göra :/

```
<%
text = Server.HTMLEncode(RecSet("TEXTEN"))
text = Replace((text),vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])([a-z/A-Z/0-9/./_/-/?/=/&]+)"
text = objRegExp.Replace(text, "<a href=""$1$2"" target=""_blank"">$2</a>")

Set RegExp = Nothing

Response.Write text
%>
```

 

Tack på förhand!

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

## #2 — Jesper T, 2005-05-12T11:59Z

<http://www.webforum.nu/showthread.php?s=&threadid=104787&forumid=148>

Det finns ett scriptarkiv på WF också. ;)

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

## #3 — Troll, 2005-05-12T12:01Z

Jomen den har jag redan kikat på men där är det ju bara länkar innom \<a \>LÄNK\</a\> som blir till länkar.

Hur ska jag knåpa ihop det så att det räcker med att bara skriva <http://> för att det ska bli en länk och forfarande kortas ner?

Men tack endå :)

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

## #4 — @nders, 2005-05-12T12:04Z

När du har kört din regexp ovan så har du ju länkar i din text? Vad händer om du kör den variabeln genom Erik Juhlins funktion?

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

## #5 — Troll, 2005-05-12T12:07Z

Aaah, så dum jag är! :D
Nu gick det upp ett ljus för mig, ska testa lite mer, tack så mycket! :)

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

## #6 — Troll, 2005-05-12T12:18Z

Ojdå, jag hade visst fel såg jag nu...

Körningsfel i Microsoft VBScript error '800a01c2'

Fel antal argument eller felaktig egenskapstilldelning.: 'ShortenLinkName'

/beta/lanktest/test.asp, line 79

```
<%
text = Server.HTMLEncode(RecSet("gbMed"))
text = Replace((text),vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])([a-z/A-Z/0-9/./_/-/?/=/&]+)"
text = objRegExp.Replace(text, "<a href=""$1$2"" target=""_blank"">$2</a>")

Set RegExp = Nothing

Response.Write ShortenLinkName(text)
%>
```

Kod för att korta ner länkarna:

```
Function ShortenLinkName(sHTML, lFirstLength, lLastLength)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.IgnoreCase = True
	
	objRegExp.Pattern = "(<a [^>]+> )([\s\S]{" & lFirstLength & "}?)([\s\S]+?)([\s\S]{" & lLastLength & "}?)(</a> )" '"(<a [^>]+> )([^</a>]{" & lFirstLength & "})([^</a>]+)([^</a>]{" & lLastLength & "})(</a> )"
	
	ShortenLinkName = objRegExp.Replace(sHTML, "$1$2...$4$5")
	Set objRegExp = Nothing
End Function
```

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

## #7 — Jesper T, 2005-05-12T12:26Z

lFirstLength, lLastLength

Antal tecken på försa respektive sista delen i länken.

Ex. Response.Write ShortenLinkName(text, 7,5)

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

## #8 — @nders, 2005-05-12T12:27Z

Du måste skicka med alla tre parametrarna till funktionen, i VBScript finns inte optionalparametrar i egendefinierade funktioner.

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

## #9 — Troll, 2005-05-12T12:28Z

Aaah, ok. Tack så mycket!
Då jobbar vidare på det.
Ha det en bra dag och tack för all hjälp!

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

## #10 — Troll, 2005-05-12T12:55Z

Nu blir jag knäpp.

Denna funktion ligger överst på sidan:

```
<%
Function ShortenLinkName(sHTML, lFirstLength, lLastLength)
	Dim objRegExp
	Set objRegExp = New RegExp
	objRegExp.Global = True
	objRegExp.IgnoreCase = True
	
	objRegExp.Pattern = "(<a [^>]+> )([\s\S]{" & lFirstLength & "}?)([\s\S]+?)([\s\S]{" & lLastLength & "}?)(</a> )" '"(<a [^>]+> )([^</a>]{" & lFirstLength & "})([^</a>]+)([^</a>]{" & lLastLength & "})(</a> )"
	
	ShortenLinkName = objRegExp.Replace(sHTML, "$1$2...$4$5")
	Set objRegExp = Nothing
End Function
%>
```

Det skumma med den är att en del blir bortplockad eftersom den finns en " ' " med i mitten av koden. Antar att det är där skon klämmer men hur ska jag åtgärda?

Denna kod ligger i mitten ungefär:

```
<%
text = Server.HTMLEncode(RecSet("gbMed"))
text = Replace((text),vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "([url]http://[/url]|[url]https://[/url]|[url]ftp://[/url])([a-z/A-Z/0-9/./_/-/?/=/&]+)"
text = objRegExp.Replace(text, "<a href=""$1$2"" target=""_blank"">$2</a>")
Set RegExp = Nothing

Response.Write ShortenLinkName(text, 7,5)
%>
```

Har placeringen av koden något med felet att göra?
jag får inget felmeddelande eller något utan det enda som händer är att inget händer. Inte allt för bra :/

Förstår inte vad det är som är fel och vad ska jag göra åt koden som blir bortplockad som kommentar?

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

## #11 — CatZ, 2005-05-12T15:06Z

```
Response.Write ShortenLinkName(text)
```

Varför 7,5 ?

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

## #12 — J.N., 2005-05-12T15:29Z

HEJ!

> **CatZ skrev:**
>
> ```
> Response.Write ShortenLinkName(text)
> ```
>
> Varför 7,5 ?

> **Jesper T skrev:**
>
> lFirstLength, lLastLength
> 
> Antal tecken på försa respektive sista delen i länken.
> 
> Ex. Response.Write ShortenLinkName(text, 7,5)

Du kan alltså skriva vilken siffra du vill, men du måste skriva två, eftersom funktionen kräver det.

Det är alltid smart att göra en funktion/all kod så generell som är möjligt (och lämpligt) för att kunna använda den på andra ställen.

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

## #13 — CatZ, 2005-05-12T15:42Z

Ja precis jag läste också hans inlägg, men jag menar du att de siffrorna inte har någon betydelse då? Kan det vara på grund av de siffrorna som funktionen "klipper" länken?

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

## #14 — J.N., 2005-05-12T15:48Z

HEJ!

Jo, de gör all skillnad, utan dem fungerar det inte.

Grundtipset är att skriva exakt det antal argument som funktionen kräver, i detta fall tre.
Function ShortenLinkName(sHTML **(#1)**, lFirstLength **(#2)**, lLastLength **(#3)**)

Vad är det som du inte får rätt på?

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

## #15 — Troll, 2005-05-12T17:04Z

Det blir ingen skillnad på länkarna. Testa koden själva och se om ni får det att funka för det händer verkligen inget alls när jag kör min :(

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

## #16 — Erik Juhlin, 2005-05-12T17:15Z

På de ställena jag skrivit (\<a...\>) så har wF lagt in ett mellanslag mellan \> och ).
Ta bort mellanslaget så ska det fungera bättre.

Varför där finns utkommenterad kod med vet jag inte... Måste missat. :)

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

## #17 — Troll, 2005-05-12T17:26Z

Haha, att jag inte tänkte på det... Men tack så väldigt mycket för hjälpen!

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

## #18 — Erik Juhlin, 2005-05-12T17:31Z

Så, nu har jag redigerat lite i andra tråden också...

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

## #19 — Troll, 2005-05-12T17:57Z

Nu funkar det fint efter att jag ändrade lite på mellanslagen. Men nu undrar jag ju av ren nyfikenhet hur jag ska bära mig åt för att bara korta ner länkar som är X-antal tecken långa.

Kom på att jag inte bara kan köra en If-sats på det hela eftersom länken ligger i mitten av massa text så det är ju inte så konstigt att alla länkar kapas även om det finns vissa som inte alls är långa.

Hmm, hur ska jag göra för att ändra sättet länkarna kortas ner på? om jag tex istället skulle köra en sånhär variant på länkarna: "http ://www.enväldigtlånglä..." ?

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

## #20 — Erik Juhlin, 2005-05-12T18:49Z

Du styr det med inparametrarna...

```
Response.Write ShortenLinkName(text, 26, 0)
```

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/128060-objregexp
