TrollMedlem sedan dec. 2003229 inlägg 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!
Jesper TMedlem sedan nov. 20017 144 inlägg TrollMedlem sedan dec. 2003229 inlägg 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å :)
@ndersMedlem sedan juni 200032 969 inlägg 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?
TrollMedlem sedan dec. 2003229 inlägg Aaah, så dum jag är! :D
Nu gick det upp ett ljus för mig, ska testa lite mer, tack så mycket! :)
TrollMedlem sedan dec. 2003229 inlägg 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
Jesper TMedlem sedan nov. 20017 144 inlägg lFirstLength, lLastLength
Antal tecken på försa respektive sista delen i länken.
Ex. Response.Write ShortenLinkName(text, 7,5)
@ndersMedlem sedan juni 200032 969 inlägg Du måste skicka med alla tre parametrarna till funktionen, i VBScript finns inte optionalparametrar i egendefinierade funktioner.
TrollMedlem sedan dec. 2003229 inlägg Aaah, ok. Tack så mycket!
Då jobbar vidare på det.
Ha det en bra dag och tack för all hjälp!
TrollMedlem sedan dec. 2003229 inlägg 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?
CatZMedlem sedan jan. 20022 440 inlägg Response.Write ShortenLinkName(text)
Varför 7,5 ?
J.N.Medlem sedan apr. 20031 660 inlägg 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.
CatZMedlem sedan jan. 20022 440 inlägg 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?
J.N.Medlem sedan apr. 20031 660 inlägg 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å?
TrollMedlem sedan dec. 2003229 inlägg 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. :)
TrollMedlem sedan dec. 2003229 inlägg 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å...
TrollMedlem sedan dec. 2003229 inlägg 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ä..." ?
Du styr det med inparametrarna...
Response.Write ShortenLinkName(text, 26, 0)