webForumDet fria alternativet

RegExp slukar text, vadan detta?

ASP

9 svar · 375 visningar · startad av Drunkenstein

Medlem sedan nov. 200529 inlägg
Frågan#1

Har problem med en RegExp kod, om jag postar http://www.webforum.nu genom ett forumlär så skrivs det ut rätt.

Men om jag däremot skriver tex "http://www.webforum.nu sdsdsd http://www.webforum.nu" (utan ") så skrivs detta ut:

www.webforum.nu ...[url]www.webforum.nu[/url]

och det vill jag ju inte. Nu undrar jag alltså vad som är fel, eller snarare vad mer är fel på detta? :D

Function Formatera(ByVal strText, ByVal lMaxLength)
	Dim objRegExp 'as object

	Set objRegExp = New regexp
	objRegExp.Global = true
	objRegExp.IgnoreCase = true

  	strText = Server.HTMLEncode(strText)
	
	objRegExp.Pattern = "(http://|https://|ftp://)(\S)(\S+)"
	strText = objRegExp.Replace(strText, "<a href=""$1$2$3"" target=""_blank"">$2$3</a>")
	
	objRegExp.Pattern = "(\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+)"
	strText= objRegExp.Replace(strText, "<a href=""mailto:$1"">$1</a>")
	
	objRegExp.Pattern = "\[URL=(.*?)\]((.|\s)*?)\[\/URL\]"
	strText = objRegExp.Replace(strText,"<a href=""$1"" TARGET=""_blank"">$2</a>")
	
	objRegExp.Pattern = "(<a[^>]+>)([\s\S]{20}?)([\s\S]+?)([\s\S]{15}?)(</a>)"
	strText = objRegExp.Replace(strText, "$1$2...$4$5")

	objRegExp.Pattern = "\[B\]((.|\s)*?)\[/B\]"
	strText = objRegExp.Replace(strText,"<B>$1</B>")

	objRegExp.Pattern = "\[I\]((.|\s)*?)\[/I\]"
	strText = objRegExp.Replace(strText,"<I>$1</I>")

	objRegExp.Pattern = "\[U\]((.|\s)*?)\[/U\]"
	strText = objRegExp.Replace(strText,"<U>$1</U>")

	objRegExp.Pattern = "\[RUBRIK\]((.|\s)*?)\[/RUBRIK\]"
	strText = objRegExp.Replace(strText,"<font size=""2""><strong><u>$1</u></strong></font>")
	
	objRegExp.Pattern = "(\S{" & lMaxLength & "})"
	strText = objRegExp.Replace(strText, "$1 ")
	
	strText = Replace(strText, vbcrlf, "<BR>" & vbcrlf)

	Formatera=strText
End Function

Och jag skriver ut det såhär (,60 är till för att bryta långa ord, kan det ha något med det att göra?):

strText = Request.Form("Text")
strText = Formatera(strText,60)
response.Write ""&strText&""
Medlem sedan dec. 19996 721 inlägg
#2

Den fjärde ersättningen förstör de tre första, eftersom den ersätter länkar.

Medlem sedan nov. 200529 inlägg
#3

Ah, ok... Hmm, men hur ska jag göra för att lösa detta då? Jag är rätt sugan på att ha någon form av klipppta länkar så att man slipper oroa sig för att något ska bli galet om man lägger in länkar på ställen där det inte finns så mycket platts :/

Sen så måste jag väll endå ha de som finns över annars blir ju inte länkarna länkar? Utan dem så skrivs det ju bara ut text.

Medlem sedan nov. 200529 inlägg
#4

Näe nu blir jag inte klok på detta, kan inte hitta något fel alls som gör så att texten skrivs ut som det gör, håller på att bli galen :/ Ingen annan som kan se något fel?

Medlem sedan dec. 20025 483 inlägg
#5

Hur vill du att resultatet skall bli?

Medlem sedan dec. 19996 721 inlägg
#6

Du borde med gott samvete kunna byta ut den fjärde till

objRegExp.Pattern = "(<a[^>]+>)([^<]{20})([^<]+)([^<]{15})(</a>)"
strText = objRegExp.Replace(strText, "$1$2...$4$5")
Medlem sedan nov. 200529 inlägg
#7

Peter S:
Rätt :D Nämen nu skrivs ju texten ut fel, texten mellan länkarna blir ju helt galen.

emission:
Ok, ska testa och se!

Medlem sedan nov. 200529 inlägg
#8

emission:
Med din kod så blev det lite tokigt på ett annat vis. Skriver jag såhär i forumläret och postar det:

[url]http://www.webforum.nu[/url] testar [url]http://www.webforum.nu[/url]

Så skrivs det ut såhär:

http://www.webforum.nu" target="_blank">[url]www.webforum.nu[/url] testar http://www.webforum.nu" target="_blank">[url]www.webforum.nu[/url]

Det var inte riktigt bra det.

Medlem sedan dec. 19996 721 inlägg
#9

Jag provade precis din kod med min ändring, och den fungerade fint. Är du säker på att du inte gjort något mer?

Medlem sedan nov. 200529 inlägg
#10

Kom på att jag försökte på mig något annat men nu funkar allt prima! Tack så väldigt mycket!

250 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)