Frågan 28 juni 2005 20:01 #1 Hej!
har denna kod för att skapa länkar från en adress, fast det fungerar inte, halva länkkoden skrivs ut.
Vad är fel?
Så här skrivs det ut skrev:
href="www.testar.nu " target="_blank">
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
strtxt = Server.HTMLEncode(strtxt)
strTxt = trim(request("inlagg"))
objRegExp.Pattern = "(www\.(\S)(\S+))"
strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">")
objRegExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">")
S SannyW Medlem sedan jan. 2003 438 inlägg Vet inte riktigt hur det ser ut när du hämtar det från databasen, men om det står typ www.testar.nu så skall det funkar om du ändrar detta.
strTxt = objRegExp.Replace(strTxt, "<a href=""$1"" target=""_blank"">$1</a>")
Som det är tidigare avslutar du inte med sluttagg.
Fungerar inte än. Det fungerar att t.ex skriva https://www.test.nu
och http://www.test.nu, fast så fort man skriver båda i samma text, då fungerar det inte, då skrivs det som jag sa ut.
När jag skriver ut flera adresser så blir det som sagt fel. Jag tog då visa källa och kollade hur det blev...
<a href="http://<a" target="_blank">[url]http://[/url]<a></a> href="www.testar.nu" target="_blank">[url]www.testar.nu[/url]</a
knepigt va?
S SannyW Medlem sedan jan. 2003 438 inlägg Har suttit och sökt å lekt lite, kom fram till följande funktion. Enligt vad jag kan komma fram till så funkar den som den skall:
<%
Function ConvertLink(strText)
strText = Replace(Server.HTMLEncode(strText),vbCrLf,"<br>")
Set objRegExp = New RegExp
objRegExp.Global = True
objRegExp.IgnoreCase = True
' Reagerar på.. www.webforum.nu
If Left(Trim(strText), 3) = "www" Then
objRegExp.Pattern = "(www\.(\S)(\S+))"
strText = objRegExp.Replace(strText, "<a href=""http://$1"" target=""_blank"" title=""Besök $1"">$1</a>")
'Reagerar på.. [ url]http://www.webforum.nu[/url]
elseif Left(strText, 12) = "[url]http://" then
strLink = Split(strText, "//")
Link = Replace(strLink(1), "[/url]", "")
objRegExp.Pattern = "\[url\](.*?)\[\/url\]"
strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök "&Link&""">"&Link&"</a>")
'Reagerar på.. [ url=http://www.webforum.nu]Länktext[/url]
elseif Left(strText, 5) = "[url=" then
objRegExp.Pattern = "\[url=(.*?)\](.*?)\[\/url\]"
strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök $2"">$2</a>")
'Reagerar på.. http://www.webforum.nu
else
objRegExp.Pattern = "((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)"
If Left(Trim(strText), 7) = "http://" then
strLink = Split(strText, "//")
Link = strLink(1)
strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Besök "&Link&""">"&Link&"</a>")
else if Left(Trim(strText), 7) = "mailto:" then
TempLink = split(strText, ":")
TempMailName = split(TempLink(1), "@")
TempName = split(TempMailName(0), ".")
FirstName= TempName(0)
LastName = TempName(1)
MailName = UCase(Left(FirstName,1)) & LCase(Mid(FirstName,2)) &" "& UCase(Left(LastName,1)) & LCase(Mid(LastName,2))
strText = objRegExp.Replace(strText, "<a href=""$1"" target=""_blank"" title=""Skicka ett mail till "&MailName&""">"&MailName&"</a>")
end if
end if
end if
ConvertLink = strText
End Function
response.write ConvertLink("http://www.webforum.nu")
%>
Du skall ersätta:
response.write ConvertLink("www.webforum.nu")
med din RS från databasen
response.write ConvertLink(request("inlagg"))
/r
Finns lite mellanslag på url på beskrivningarna, texten såg ut som en stor länk. Lite trött och fick inte till inlägget riktigt. :OO
S SannyW Medlem sedan jan. 2003 438 inlägg Att skriva ut flera adress i funktionen som jag gjort kommer inte att fungera heller kom jag på.
Problemet som uppkommer är att båda dina pattern uppfylls och de ändras. Om du kan se till att samtliga länkar har samma format så funkar nedanstående, problem uppstår som sagt vid olika.
<%
strTxt = "www.testar.nu www.testar.nu"
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
strtxt = Server.HTMLEncode(strtxt)
objRegExp.Pattern = "(www\.(\S)(\S+))"
strTxt = objRegExp.Replace(strTxt, "<a href=""http://$1"" target=""_blank"">$1</a>")
response.write strTxt
%>
Hur kommer det säg att det bara fungerar om man har samma format? Måste ju fungera på något sätt, fast du kanske inte vet det.
Tack för hjälpen trotts allt.
Man kan väl fixa så att dom har samma format med replace.
t.ex om man vill att det ska bara vara https://www.hej.nu
då tar man
strTxt = Replace(strTxt, "http://", "")
Det bör fungera, fast jag vill fortfarande att det ska fungera om man skriver olika, jag är stönig :)
S SannyW Medlem sedan jan. 2003 438 inlägg <%
strTxt = "www.testar.nu [url]http://www.testar.nu[/url] [url]http://www.testar.nu[/url]"
strTxt = Server.HTMLEncode(strTxt)
strTxt = Replace((strTxt),vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
'fixa länkar och e-postadresser
objRegExp.Pattern = "([url]www.[/url][^ ]*[a-z])|([url]http://[/url][^ ]*[a-z])"
strTxt = objRegExp.Replace(strTxt,"<a href=""$1$2"" target=""_blank"">$1$2</a>")
'buggfixningar
strTxt = Replace(strTxt,"""www","""http://www")
strTxt = Replace(strTxt,"""http://www""","""www""")
'slut
Set RegExp = Nothing
Response.Write strTxt
%>
Tack så mycket SannyW, du är en pärla :)
en ska till bara, varför har du flera appostrofer i
strTxt = Replace(strTxt,"""www","""http://www ")?
hmm, allt fungerar bra utom en grejj, när t.ex ska skapa en länk som denna
http://www.silentwings.no/article/articleview/55/1/9/
så blir det bara en länk fram till / efter articleview. Vad beror detta på?
S SannyW Medlem sedan jan. 2003 438 inlägg Måste gå med på att släppa igenom siffror
ändra till detta:
objRegExp.Pattern = "([url]www.[/url][^ ]*[\w])|([url]http://[/url][^ ]*[\w])"
Angående det med appostrofer så har jag inget riktigt svar, fick hjälp av en tråd på forumet. Och det som jag kan se är att det beror på href som blir fel. Snutt problem....
Jag gjorde det, kollade på webeye.nu . Såg det och satte dit det. Men tack för hjälpen :)
Fan, ett problem till.
Om jag skriver flera länkar så blir alla som en länkar under varandra. Det blir t.ex så här. Ska det vara något som känner av att det måste vara hela "texter" för att skapa en länk? Altså inget radbyte, eller mellanslag.
http://www.test.nu <br>https://www.test.nu <br>http://test.nu
S SannyW Medlem sedan jan. 2003 438 inlägg :) Kanske beror det på "små timmarna" eller bara på mig. Men jag är INTE riktigt med på vad du menar.
Altså om jag skriver flera länkar, så blir alla en och samma.
Klickar man på en så har alla adresser lagt ihop sig. Om man även har radbrytning så har <br> lagts till i adressen.
S SannyW Medlem sedan jan. 2003 438 inlägg Hmm, om jag förstår rätt nu så har du skrivit:
http://www.test.nu <br>https://www.test.nu <br>http://test.nu
då är det inte konstigt att det blir en och samma länk. Finns det någon anledning att använda <br> på det viset?
Det är så att jag har ett forum, där så har jag testat och gjort ett inlägg. Då har jag skrivit så här
http://www.test.nu
https://www.test.nu
http://www.test.nu
Det blir ju <br> eftersom jag har en replace som byter ut Vbcrlf till <br>.
S SannyW Medlem sedan jan. 2003 438 inlägg <%
strTxt = "www.testar.nu<br>[url]http://www.testar.nu[/url] [url]http://www.silentwings.no/article/articleview/55/1/9/[/url]"
strTxt = Replace(strTxt,"<br>",vbCrLf)
strTxt = Server.HTMLEncode(strTxt)
strTxt = Replace(strTxt,vbCrLf,"<br>")
set objRegExp = new RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = true
'fixa länkar och e-postadresser
objRegExp.Pattern = "([url]www.[/url][^ ]*[\w])|([url]http://[/url][^ ]*[\w])"
'strTxt = objRegExp.Replace(strTxt,"<a href=""$1$2"" target=""_blank"">$1$2</a>")
strTxt = objRegExp.Replace(strTxt,"<a href='$1$2' target='_blank'>$1$2</a>")
'buggfixningar
strTxt = Replace(strTxt,"'www","'http://www")
strTxt = Replace(strTxt,"''http://www","''www")
'slut
Set RegExp = Nothing
printRows = Split(strTxt, "<br>")
For i = 0 To Ubound(printRows)
Response.Write printRows(i)
Response.Write "<br>"
Next
%>