Med tanke på att jag inte har pluggat asp är det här svårt. skulle vara supertacksam om nån ville hjälpa till att pussla ihop detta.
Mitt mål är att allt som börjar på http:// ftp:// news:// mailto: och helst även www. ska bli en länk och att denna länk ska kortas ned till max 40 tecken per rad. Nedkortningen kan ske genom att mittendelar av länken göms eller ännu hellre genom att den länk man ser radbryts på var 40:de tecken medans länken man skickas till hålls intakt.
Jag har t.ex hittat de här koderna i andra trådar men vet inte hur jag pusslar ihop dem med det jag har. Variant 1:
<%= convertlinks(RS("Text"))%>
'----------------------------------------------------
' * ConvertLinks *
' Fixa så att länkar blir länkade i HTML-koden.
' Nedanstånde kod kommer från [url]www.ojmnet.com[/url]
'----------------------------------------------------
Function ConvertLinks(svalue)
svalue = ConvertLinksHREF(svalue, "http://")
svalue = ConvertLinksHREF(svalue, "ftp://")
svalue = ConvertLinksHREF(svalue, "news://")
svalue = ConvertLinksHREF(svalue, "mailto:")
ConvertLinks = svalue
End Function
Function ConvertLinksHREF(svalue, sHREF)
Dim iPos1, iPos2, sTemp, sTemp1, sTemp2
iPos2 = 1
iPos1 = InStr(1, svalue, sHREF, 1)
Do While iPos1 > 0
iPos2 = FindLinkEnd(svalue, iPos1 + Len(sHREF))
If iPos2 > 0 Then
sTemp1 = Mid(svalue, iPos1, iPos2 - iPos1)
sTemp2 = "<A HREF=" & Chr(34) & sTemp1 & Chr(34) & ">" & sTemp1 & "</A>"
svalue = Left(svalue, iPos1 - 1) & sTemp2 & Mid(svalue, iPos2)
iPos2 = iPos1 & Len(sTemp2) + 1
Else
iPos2 = iPos1 + Len(sHREF)
End If
iPos1 = InStr(iPos2, svalue, sHREF, 1)
Loop
ConvertLinksHREF = svalue
End Function
Function FindLinkEnd(svalue, iPos1)
Dim iPos2, i, iLen, iTempPos
Dim sValidChars
sValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz12345678 90-.@/"
iLen = iPos1 + Len(Mid(svalue, iPos1)) - 1
End Function
'----------------------------------------------------
Variant 2:
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>)"
ShortenLinkName = objRegExp.Replace(sHTML, "$1$2...$4$5")
Set objRegExp = Nothing
End Function
variant 3:
Set objRegExp = New regexp
sURL = "http://www.blablabla.com/jättelånglänk.htm"
objRegExp.Pattern = "(.{25})(.{4,})(.{6})"
sText = objRegExp.Replace(sURL, "$1...$3")
'Resultat: sText = "http://www.blablabla.com/...nk.htm"
Nu skulle jag vilja få ihop någon av de koderna i min forumkod (förstår inte aspkod själv ännu precis vilket gör det knepigt, jag kan typ bara if then satser och så än så länge). varArray-koden nedan kan i alla fall ersättas av koden ovan gissar jag eftersom den bara är till för att korta ned för långa ord och urler som kan förstöra layouten.
ska över huvud taget koden ovan in i själva "inläggskoden" för varje inlägg som loopas eller ska den ligga någonstans var som helst i början på sidan?
response.write "<table width=""100%"" bgcolor="""&color&""" class=""text_medium"" cellpadding=""5"" cellspacing=""0"">"
response.write "<tr>"
response.write "<td width=""30%"" valign=""top"">"
response.write "<a href=""site.asp?id="&rs("fromid")&"""><b>"&rs("username")&"</b></a><br>"
if rs("gender") = "Kille" then
response.write "Kille "
else
response.write "Tjej "
end if
dteDOB = rs("born")
intAge = convAge(dteDOB)
response.write intAge
response.write " i "&rs("city")&""
response.write "<br>"
response.write ConvDate(rs("date"), TRUE)
response.write "</td>"
response.write "<td width=""70%"" valign=""top"">"
strNyText = ""
strText = rs("message")
varArray = split (strText, " ")
for i = 0 to ubound(varArray)
strNyText = strNyText & Left(varArray( i ), 50) & " "
next
strComText = server.HTMLEncode(strNyText)
strComText = Replace(strComText,vbcrlf,"<BR>")
Response.Write strComText
response.write "</td>"
response.write "</tr>"
response.write "</table>"
som sagt, supertacksam för svar.
david
