<%
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
Function LinkURL(str)
Dim objRegExp, strTemp
Set objRegExp = New RegExp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "(\b(www\.|http\://)\S+\b)"
' __ kommer att bli mellanslag på länken i nästa funktion: shortenWords
strTemp = objRegExp.replace(str, "<a__href=""http://$1""__target=""_new"">$1</a>")
LinkURL = Replace(strTemp, "http://http://","http://")
Set objRegExp = Nothing
End Function
Function shortenWords(str)
Dim objRegExp, strTemp, returnString
Set objRegExp = New RegExp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "\s?([^\s]+)\s?"
Set myMatches = objRegExp.Execute(str)
For Each myMatch In myMatches
'Om ordet börja med <a__ så skall vi ersätta alla __ i ordet till mellanslag, annars kontrollera vi längden och om ordet är längre än 39 tecken så korta vi ner den till 39 tecken.
If Not Left(LCase(myMatch.SubMatches(0)),4) = "<a__" Then
If Len(myMatch.SubMatches(0)) >= 40 Then
returnString = returnString & Left(myMatch.SubMatches(0),31) & "..." & right(myMatch.SubMatches(0),5)
Else
returnString = returnString & myMatch.SubMatches(0)
End If
Else
returnString = returnString & Replace(myMatch.SubMatches(0),"__"," ")
End If
returnString = returnString & " "
Next
shortenWords = returnString
End Function
'Vi gör en test på allt:
str = "Hej på dig [url]http://www.bob.com[/url] adshbdskajfdbnsjkfnsdfjksnffghfghfghfghfghfghfghfgsdjkfnlsfdsjfsdnfjknsdfnlsdlfsldflnsdfnlsdnfsdfjfsdfjnlsdfld"
str = LinkURL(str)
str = ShortenLinkName(str, 27, 12)
str = shortenWords(str)
Response.Write str
%>
red. ShortenLinkName har en liten bugg om du lägger två länkar på raken där ena är lång och den andra en lite kortare url.
