Avatar billede thefatman Nybegynder
12. februar 2004 - 13:26 Der er 6 kommentarer og
1 løsning

RegEXP - Replace og gentagelser

Hej folkens

Jeg har nu lavet mig et forum, hvor man kan quote andres indlæg, det fungerer perfekt, men lige så snart man vil lave quote i quote, så bliver der ballade....

Her et et eks:
[Quote=TheFatMan]
[quote=Navn her]test[quote]
test2
[/Quote]

Når det sker, så bliver de yderste Quote tags replaced, mens de inderst ikke bliver rørt..

Her er min funktion:
<%
Function RegEXPMaker(strInput)
    Set regex = New RegExp
        regex.Global = True
        regex.IgnoreCase = True
        regex.Pattern = \[QUOTE=(.*?)\](.*?)\[/QUOTE\]"
        RegEXPMaker = regex.Replace(strInput,<fieldset><LEGEND style=padding-bottom:5px>$1 skrev følgende:</LEGEND>$2</fieldset> )
    Set regex = nothing
End Function
%>

Jeg ville jo gerne have at den replacede begge quote tags, så jeg fik følgende resultet:
<fieldset>
<LEGEND style=padding-bottom:5px>TheFatMan skrev følgende:</LEGEND>
<br>
<fieldset>
<LEGEND style=padding-bottom:5px=Navn her skrev følgende:</LEGEND>
test2<br>
</fieldset>
</fieldset>

Håber I kan hjælpe mig med at læse problemet..
Avatar billede ellebaek Nybegynder
12. februar 2004 - 14:31 #1
<%
Function RegEXPMaker(strInput)
    Set regex = New RegExp
        regex.Global = True
        regex.IgnoreCase = True
        regex.Pattern = \[QUOTE=(.*?)\](.*?)\[/QUOTE\]"
        RegEXPMaker = regex.Replace(strInput,<fieldset><LEGEND style=padding-bottom:5px>$1 skrev følgende:</LEGEND>RegEXPMaker($2)</fieldset> )
    Set regex = nothing
End Function
%>

Ved ikke helt om det kan lade sig gøre det her, men det skal jo være noget med at du laver et rekursivt kald, så den inderste del også bliver rørt.
Avatar billede thefatman Nybegynder
12. februar 2004 - 15:09 #2
#ellebaek

It won't work...hehe...

http://www.thefatman.dk/test.asp

Er der nogle andre som har nogle idéer`?
Avatar billede eagleeye Praktikant
12. februar 2004 - 15:15 #3
Prøv sådan her:

<%
Function RegEXPMaker(strInput)
    dim tempStr
    Set regex = New RegExp
    regex.Global = True
    regex.IgnoreCase = True
    regex.Pattern = \[QUOTE=(.*?)\](.*?)\[/QUOTE\]"
    tempStr = regex.Replace(strInput,<fieldset><LEGEND style=padding-bottom:5px>$1 skrev følgende:</LEGEND>$2</fieldset> )
    if regex.test(tempStr) then tempStr = RegEXPMaker(tempStr)
    RegEXPMaker = tempStr
    Set regex = nothing
End Function
%>
Avatar billede thefatman Nybegynder
12. februar 2004 - 15:27 #4
#Eagle

Ventede på dig :)

Men desværre virker din kode ikke.

Her er sourcen til test.asp:
<%
Function RegEXPMaker(strInput)
    dim tempStr
    Set regex = New RegExp
    regex.Global = True
    regex.IgnoreCase = True
    regex.Pattern = "\[QUOTE=(.*?)\](.*?)\[/QUOTE\]"
    tempStr = regex.Replace(strInput,"<fieldset><LEGEND style=padding-bottom:5px>$1 skrev følgende:</LEGEND>$2</fieldset>" )
    if regex.test(tempStr) then tempStr = RegEXPMaker(tempStr)
    RegEXPMaker = tempStr
    Set regex = nothing
End Function

http://www.thefatman.dk/test.asp


strTest = "[Quote=TheFatMan][quote=Navn her]test[quote]test2[/Quote]"

response.write "<strong>Orginal String:</strong><br>" + strTest + "<br>"
response.write "<br><br>"
response.write "<strong>After String:</strong><br>" + RegEXPMaker(strTest )+ "<br>"

%>
Avatar billede eagleeye Praktikant
12. februar 2004 - 15:31 #5
der mangler en / i den anden quote
[quote=Navn her]test[quote]
Skal være:
[quote=Navn her]test[/quote]

men jeg tror den så tager slut [/quote] for den forkerte..
Avatar billede thefatman Nybegynder
12. februar 2004 - 16:35 #6
eagle.

Hvad kan jeg mere sige end - MANGE TAK

Du reddede mig igen - igen - igen :) hehe
Avatar billede eagleeye Praktikant
12. februar 2004 - 16:39 #7
hehe ok, det ser ud som om den tager den rigtige slut /quote :)
et svar fra mig så :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester