Hejsan! Denna har jag fått någonstans ifrån. Har inte själv skrivit den Funktionen verkar inte fuka som den skall... Du har lite kod som gör en replace från vbcrlf till <br> Aha... Nu verkar det funka ja... Orsaken är ganska enkel. När funktionen hittar en länk så letar den efter sista tecknet på länken vilket innebär att det ska vara ett mellanslag efter. Eftersom <br> satt ihop med länken så tolkade funktionen att <br> hörde till länken och ett fel uppstod.Konventera Länkar
Sitter här och funderar lite om hur man kan fixa en funktion som gör om länkar...
<code>
Function ConvertLinks(svalue)
svalue = ConvertLinksHREF(svalue, "http://")
svalue = ConvertLinksHREF(svalue, "ftp://")
ConvertLinks = svalue
End Function
</code>
Detta är ju den simplaste man kan ha, den funkar prefekt...
MEN självklart inte på mer än EN länk...
Så jag skulle vilja ha en funktion som funkar på samma sätt i det stora hela fast tar med ALLA länkarna...
Sen har jag hittat två andra funktioner men dom verkar inte funka...
Det blir bara fel, kolla om det kan va nåt... *Nedan*
<code>
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 target=_blank HREF=" & sTemp1 & ">" & 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
</code>
Eller denna...
<code>
Function FindLinkEnd(svalue, iPos1)
Dim iPos2, i, iLen, iTempPos
Dim sValidChars
sValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-.@/"
iLen = iPos1 + Len(Mid(svalue, iPos1)) - 1
iPos2 = -1
For i = iPos1 To iLen
iTempPos = InStr(1, sValidChars, Mid(svalue, i, 1), 1)
If iTempPos = 0 Then
If i < iPos1 + 4 Then
iPos2 = -1
Else
iPos2 = i
End If
Exit For
End If
Next
If iPos2 = 0 Then
iPos2 = Len(svalue) + 1
End If
FindLinkEnd = iPos2
End Function
</code>
Och sen till ett annat litet problem...
Jag vill att användaren skall kunna skriva in tex <FONT COLOR="#123456"> Alltså en valfri färgkod... Förstår inte hur man kan göra en sån funktion...!?
Tackar för allt hjälp man kan få! / JohnSv: Konventera Länkar
/Janne
Response.Write GetUrl("hej text med en adress www.borsholm.se" mitt i )
Function GetUrl(ByVal strText)
Dim mDelimit
Dim re
mDelimit = Chr(0)
Set re = New RegExp
re.Global = True
re.IgnoreCase = true
re.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
strText = re.Replace(strText, "$1")
re.Pattern = "(http://|https://|ftp://|mailto:)(\S)(\S+)"
strText = re.Replace(strText, "<a target=_blank href=""$1$2" & mDelimit & "$3"">$2" & mDelimit & "$3</a>")
re.Pattern = "(www\.(\S)(\S+))"
strText = re.Replace(strText, "<a target=_blank href=""http://$1"">$1</a>")
strText = Replace(strText, mDelimit, "")
GetUrl=strText
End Function Sv: Konventera Länkar
Jag kör funktionen såhär;
text=GetUrl(text)
Och det funka så långt men när länken skrivs ut så kommer länken med samt tre rader till...
Alltså urlen blir tex såhär:
http://www.haha.com/<br><br><B>[
Hur kommer detta sig tros!?Sv: Konventera Länkar
Ändra denna till:
Replace(strText, vbcrlf, " <br>")
Notera mellanslag innan <br>
Då kommer det att fungera galant
/JanneeSv: Konventera Länkar
Men en fråga bara, varför blev det sånt problem utan mellanslag!?
Nyfiken så man lär sig något tills nästa gäng...!?Sv: Konventera Länkar
/Janne