webForumDet fria alternativet

Varför fungera inte RegExp koden?

ASP

12 svar · 348 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1
objRegExp.Pattern = "\[(kod)\](.*?)\[\/(kod)\]"
mess = objRegExp.Replace(mess,"<blockquote><font style=""font-size: 9px"">Kod:</font><hr class=""mess4"" size=""1""><font class=""time"">$2</font></font><hr class=""mess4"" size=""1""></blockquote>")

objRegExp.Pattern = vbCrLf & vbCrLf
mess = objRegExp.Replace(mess,"<br>")

koden fungera om jag skriver [.kod]test[./kod] på en rak linje men om jag skriver:
[.kod]
TEst
[./kod]
så blir det helt fel...

Medlem sedan aug. 20009 inlägg
#2

Byt ut (.*?) mot (\S+) istället ... det borde fungera.

Jag kör i mitt eget forum följande kod:

	Function urlTag(strIn, strType)

		Dim re, strOut
		Set re = New RegExp

		If strType = "tohtml" Then
			re.Pattern = "\[url\](\S+)\[/url\]"
			re.IgnoreCase = True
			re.Global = True

			strOut = re.Replace(strIn, "<a target=" & Chr(34) & "_blank" & Chr(34) & " href=" & Chr(34) & "$1" & Chr(34) & ">$1</a>")
		Else
			re.Pattern = "<a target=" & Chr(34) & "_blank" & Chr(34) & " href=" & Chr(34) & "(\S+)" & Chr(34) & "(\S+)</a>"
			re.IgnoreCase = True
			re.Global = True

			strOut = re.Replace(strIn, "[url]$1[/url]")
		End If

		Set re = Nothing

		urlTag = strOut
	End Function

--
Andreas Selstam, dvdforum.nu

Medlem sedan juni 20019 519 inlägg
#3

nope.. fungerade inte ...

Medlem sedan dec. 19995 874 inlägg
#4

Varför har du kod inom paranteser?
Ta bort dessa och anropa $1 istället.

Medlem sedan juni 20019 519 inlägg
#5

har gjort det nu :) men det hjälper inte för det :)

Medlem sedan aug. 20009 inlägg
#6

Har du uppdaterat till senaste versionen av VBScript? 5.5 är den senaste (har jag för mig) och just regexp i tidigare versioner var otroligt buggigt.

Vilken version du kör kollar du lätt genom:

<%=ScriptEngine%><BR>
<%=ScriptEngineMajorVersion%><BR>
<%=ScriptEngineMinorVersion%><BR>
Medlem sedan juni 20019 519 inlägg
#7

fick:
VBScript
5
6

Medlem sedan mars 20015 287 inlägg
#8

Helt OT, men måste bara passa på att välkomna Andreas Selstam till WF. :)

(fr en gammal dvdforumräv)

Medlem sedan juni 20019 519 inlägg
#9

ingen som kan kanske veta???

Medlem sedan aug. 20009 inlägg
#10

Tja, koden som jag skrev vet jag fungerar (den används ofta) ... :)

Det jag funderar på är om det finns några andra inställningsmöjligheter som kan vara påverkande, men det tror jag inte.

Medlem sedan juni 20019 519 inlägg
#11
<%
Function encode(mess)

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
mess = Server.HTMLEncode(mess)

objRegExp.Pattern = "\[email=(&quot;)?(.*?)@(.*?)\1\](.*?)\[\/email\]"
mess = objRegExp.Replace(mess,"<a href=mailto:$2@$3 target=""_blank"">$4</a>")

objRegExp.Pattern = "\[email\](.*?)@(.*?)\[\/email\]"
mess = objRegExp.Replace(mess,"<a href=mailto:$1@$2 target=""_blank"">$1@$2</a>")

objRegExp.Pattern = "\[url=(&quot;)?([url]http://[/url])?(.*?)\1\](.*?)\[\/url\]"
mess = objRegExp.Replace(mess,"<a href=http://$3 target=""_blank"">$4</a>")

objRegExp.Pattern = "\[url\]([url]http://[/url])?(.*?)\1\[\/url\]"
mess = objRegExp.Replace(mess,"<a href=http://$2 target=""_blank"">$2</a>")

objRegExp.Pattern = "\[kod\](\S+)\[/kod\]"
mess = objRegExp.Replace(mess,"<blockquote><font style=""font-size: 9px"">Kod:</font><hr class=""mess4"" size=""1""><font class=""time"">$1</font></font><hr class=""mess4"" size=""1""></blockquote>")

objRegExp.Pattern = "\[color=(.*?)\](.*?)\[/color\]"
mess = objRegExp.Replace(mess,"<font color=$1>$2</font>")

objRegExp.Pattern = "\[(b|/b|i|/i|u|/u)\]"
mess = objRegExp.Replace(mess,"<$1>")

objRegExp.Pattern = vbTab
mess = objRegExp.Replace(mess,"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;")

objRegExp.Pattern = vbCrLf
mess = objRegExp.Replace(mess,"<br>" & vbcrlf)

objRegExp.Pattern = "\[citat\](.*?)\1\[\/citat\]"
mess = objRegExp.Replace(mess,"<blockquote><B style=""font-size: 9px"">Citat: </b><hr class=""mess4"" size=""1""><I>$1</I><hr class=""mess4"" size=""1""></blockquote>")

objRegExp.Pattern = "\[citat=(\S+)\](\S+)\[\/citat\]"
mess = objRegExp.Replace(mess,"<blockquote><B style=""font-size: 9px"">$1</b> <font style=""font-size: 9px"">skrev: </font><hr class=""mess4"" size=""1""><I>$2</I><hr class=""mess4"" size=""1""></blockquote>")

objRegExp.Pattern = "\[list\](.*?)\[\/list\]"
mess = objRegExp.Replace(mess,"<ul>$1</ul>")

objRegExp.Pattern = "\[list(=1|=a)\](.*?)\[\/list\]"
mess = objRegExp.Replace(mess,"<ol type$1>$2</ol>")

objRegExp.Pattern = "&quot;(\S+)&quot;"
mess = objRegExp.Replace(mess,"&#8220;$2&#8221;")

objRegExp.Pattern = "\[\*\](.*?)"
mess = objRegExp.Replace(mess,"<li>$1</LI>")

objRegExp.Pattern = vbCrLf & vbCRLf
mess = objRegExp.Replace(mess,"<br>"& vbCrLf)

mess = Replace(mess, "'", "''") 

	encode = mess
End Function

%>

om du vill kolla lite extra på alla mina koder?

Medlem sedan juni 20019 519 inlägg
#12

du.. jag ändrade till:

(.|\n)+?

nu fattar den att

[.kod]
test
[./kod]
finns... men den skriver inte ut $1 då, som om $1 aldrig finns.. :(

det borde ju fungera.. eller hur?

Medlem sedan juni 20019 519 inlägg
#13

fixat det:

((.|\n)+?)
så fungera allt..

281 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
144 ms — ändringar (db)