http://www.webforum.nu/showthread.php?s=&threadid=104787&forumid=148
Det finns ett scriptarkiv på WF också. ;)
19 svar · 436 visningar · startad av Troll
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!
http://www.webforum.nu/showthread.php?s=&threadid=104787&forumid=148
Det finns ett scriptarkiv på WF också. ;)
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?
Aaah, så dum jag är! :D
Nu gick det upp ett ljus för mig, ska testa lite mer, tack så mycket! :)
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
lFirstLength, lLastLength
Antal tecken på försa respektive sista delen i länken.
Ex. Response.Write ShortenLinkName(text, 7,5)
Du måste skicka med alla tre parametrarna till funktionen, i VBScript finns inte optionalparametrar i egendefinierade funktioner.
Aaah, ok. Tack så mycket!
Då jobbar vidare på det.
Ha det en bra dag och tack för all hjälp!
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?
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.
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?
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å?
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 :(
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. :)
Haha, att jag inte tänkte på det... Men tack så väldigt mycket för hjälpen!
Så, nu har jag redigerat lite i andra tråden också...
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ä..." ?