webForumDet fria alternativet

Problem med att skapa länk med regexp

ASP

38 svar · 867 visningar · startad av joel_joel88 · sida 2 av 2

Frågan, av joel_joel88

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

Läs frågan i sin helhet →
Medlem sedan nov. 20021 222 inlägg
#21

Man måste väl ha något som känner av att den inte skapa ta med radbrytningar efter en adress.

Medlem sedan nov. 20021 222 inlägg
#22

Blir fort farande samma fel :(

Jag tror att felet ligger i regexp koden. Man måste nog ha något som känner av att ej ta med radbrytningar.

Medlem sedan jan. 2003438 inlägg
#23

Ok, vi går tillbaka lite. Något jag inte riktigt är med på, varför slå radbrytning i ett inlägg om man inte önskar ha ett? Och skriva länkar i rad? skriver man inte automatiskt med mellanrum. https://www.testar.nu https://www.testar.nu INTE gör man väl https://www.testar.nuwww.testar.nu

Eller har jag missförstått?

Medlem sedan jan. 2003438 inlägg
#24

Har gjort lite förändringar och satt ihop en samlad funktion med lite alternativ. Om det är någon som ser något/några fel så skrik till.

/r
Tog bort och postade nytt inlägg här under med en fil istället.

Medlem sedan jan. 2003438 inlägg
#25

Bifogar filen här istället.

Medlem sedan nov. 20021 222 inlägg
#26

Klart att man vill ha radbrytningar i ett inlägg.

Typ som nu när jag skriver, då är det två rader längre ner. När detta skrivs ut så blir det <br> mellanradbrytningarna, det fattar du väl :)

Det är ju inget i regexp koden som säger att den inte ska ta med en länk som är radbruten, och inte heller ta med html så som <br>.

finns det inte ett tecken som heter \b som bara tar med ordbunden text?

Medlem sedan jan. 20021 122 inlägg
#27

\b bryter efter "non-word" tecken, alltså allt som inte är bokstäver eller siffror. Därför kommer den skapa problem med / i adresser.
Men varför vill man inte avbryta länken innan ett radbryt/ha ett radbryt i en länk? :q
Nu har jag inte läst igenom Sannys kod helt, men jag fick den inte att funka. Nedanstående borde dock matcha alla giltiga addresser.

(http:\/\/)?(www\.)?[a-zA-Z]\w*\.[a-z]{2,4}(\/\w+)*\/?

Ska du sedan ha motsvarande taggar som används här för att avgränsa länkar får du slänga in \[url\] i början och [^[]\[\/url\] i slutet av ovanstående.

/r Borde inte denna tråd vara i det nya regexp forumet?

Medlem sedan jan. 2003438 inlägg
#28

Vad fick pettsson inte att fungera? Koden i txt filen som du kunde ladda ner?

Berätta gärna vad som blev fel?

Medlem sedan nov. 20021 222 inlägg
#29

Yttligare några problem.

Problem 1.
om man ha t.ex mailto:joel@joel.com så skrivs mailto: också ut i länken.

Problem 2.
om jag har t.ex
<img src="http://www.bild.com/en_bild.jpg">
Så blir http://www.bild.com/en_bild.jpg en länk.

Går det fixa det så att det inte blir en länk i en imgtagg?

Medlem sedan jan. 2003438 inlägg
#30

Om vi tar problem 2 så för att släppa igenom imgtagg så måste vi släppa igenom html taggar och då kan vad som helst göras vid postning.

Jag ser inte riktigt ditt användningsområde, att släppa html-taggar i ett forum. Det är inte att rekommendera. Så din lösning borde gå mot webforums och då tvinga postaren att bädda in sin önskning med typ [ img]http://www.bild.com/en_bild.jpg

Medlem sedan nov. 20021 222 inlägg
#31

Ok. För att inte släppa igenom html taggar så använder man väl strtxt = Server.HTMLEncode(strtxt).

Fast då fungerar ju inte ens <br> som man måste ha när man formaterar text, och kanske fet text.

Medlem sedan jan. 2003438 inlägg
#32

Exakt, det är därför man ändra <br> till vbCrLf.

Man skulle väl kunna göra samma sak med img-tagg, men frågan är om man inte krånglar till det för sig.

Medlem sedan nov. 20021 222 inlägg
#33

Jag gör om eventuella adress till länkar när jag ska skriva ut inläggen i forumet. Är det bättre än att göra om till länkar när man sparar texten i databasen när man gör ett nytt inlägg?

Medlem sedan nov. 20021 222 inlägg
#34

SannyW kan du och har lust att hjälpa mig med img koden? :h

Medlem sedan jan. 20021 122 inlägg
#35

SannyW skrev:

Vad fick pettsson inte att fungera? Koden i txt filen som du kunde ladda ner?

Berätta gärna vad som blev fel?

Jag fick ingen matchning mot adresser med den pattern du hade i din kod.

Joel: Man behöver inte släppa igenom <br>, <b> osv, gör istället som Sanny säger, definera egna element liksom här på wF. Du skriver väl ändå inte <br> i dina inlägg här?

Medlem sedan nov. 20021 222 inlägg
#36

Så här har jag gjort än så länge.

Där man skapar inlägg

strTxt = request("inlagg")
strtxt = Server.HTMLEncode(strtxt) ' För att ta borte eventuella html taggar
strTxt = replace(strTxt, vbcrlf, "<br>")

Där man läser

strTxt = rs("inlagg")
strTxt = replace(strTxt, "[fet]", "<b>")
strTxt = Replace(strTxt, "[/fet]", "</b>")
strTxt = replace(strTxt, "[kursiv]", "<i>")
strTxt = Replace(strTxt, "[/kursiv]", "</i>")
strtTxt = Replace(strTxt, "<br>", " <br>") ' Fixar så att det blir ett mellanrum mellan texten och <br>

set objRegExp = new RegExp	
objRegExp.Global = true
objRegExp.IgnoreCase = true

objRegExp.Pattern = "([url]www.[/url][^ ]*[\w])|((?:mailto\:|(?:news|(?:ht|f)tp(?:s?))\://){1}\S+)|\[url\](.*?)\[\/url\]|\[url=(.*?)\](.*?)\[\/url\]|\[mail=(.*?)\](.*?)\[\/mail\]"
strTxt = objRegExp.Replace(strTxt,"<a href='$1$2$3$4$6' target='_blank'>$1$2$3$5$7</a>")

strTxt = Replace(strTxt,"'www","'http://www")
strTxt = Replace(strTxt,"''http://www","''www")

printRows = Split(strTxt, "<br>")

For i = 0 To Ubound(printRows)
   Response.Write printRows(i)
   Response.Write "<br>"
Next

Är det "rätt" gjort. Jag får göra ett mellanrum innan <br> annars om man har flera länkar så säts dom ihop.

Medlem sedan nov. 20021 222 inlägg
#37

F*n jag blir tokig. Det fungerar aldrig som jag tänkt mig!

Hjälp mig någon. Hur ska jag göra för att få bort all html kod som skrivs in, men ändå så ska Vbcrlf kunna bli <br> när inlägget skrivs ut och man ska kunna göra egen forum kod.
T.ex [fet][/fet]

Medlem sedan jan. 20021 122 inlägg
#38

Lugn i bussen nu...
För att göra forum-taggar anpassar du denna regexp:
[kod]
objRegExp.Pattern = "\[fet\](.*?)\[\/fet\]"
strTxt = objRegExp.Replace(strTxt, "<b>$1</b>")
[/kod
Byt bara ut fet mot de taggar du vill ha.

Medlem sedan nov. 20021 222 inlägg
#39

eller så gör man det med vanlig replace

strtxt = Replace(strTxt, "[fet]", "<b>")

eller hur?

Fast det var inte det jag frågade om, och det har löst sig så jag behöver ingen hjälp mer :)

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)