[asp] Ubbparser / html een kleurtje geven!

Pagina: 1
Acties:

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Hoi mensen!

Ik ben vandaag nog even met mijn ubb parser zitten klooien en ben nu bezig met de code tag.

Hierin wil ik html een kleurtje geven, net als in dreamweaver.

Dat lukt allemaal redelijk.
Met regular expressions krijg je de tags allemaal netjes in kleur.

Nu zit ik met een probleem:
Ik wil binnen een tag dingen tussen quotes ook een andere (blauwe) kleur geven.

Ik ben bezig geweest om het met een regular expression te doen maar dat wilde niet lukken aangezien hij dan dit doet:

<table "width=100" collspan="0" cellpadding="0">

code:
1
2
    RegExpr.Pattern = "&lt;(&quot;.*?&quot;)&gt;"
    strReplace = RegExpr.Replace(strReplace, "<font color=""#0000FF"">&lt;$1&gt;</font>")


(of iets dergelijks)

Daarna heb ik het met een do loop geprobeerd maar dit leek mij redelijk sloom te worden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    Do WHILE InStr(1, strReplace, "&quot;") > 0
        
        lngStartPos = InStr(lngEndPos, strReplace, "&lt;", 0)
        lngEndPos = InStr(lngstartPos, strReplace, "&gt;", 0) +4
        
            strTag = mid(strReplace, lngStartPos , lngEndPos - lngStartPos)

        do until InStr(1, strTag, "&quot;") = 0
        
            'bepaal positie eerste &quot;
            leftfromquot = instr(strTag, "&quot;")      
            
            'pak alles links van de eerste quot
            strstack = strstack &  left(strTag, leftfromquot -1)
            
            'vul de stack bij afhankelijk van de eerste of sluitende quote
            if quotcnt = 0 then
                strstack = strstack & "<Font color=""#0000FF"">"""
                quotcnt = 1
            else
                strstack = strstack & """</font>"
                quotcnt = 0
            end if

            'haal spul net in de stach gezet uit de string!
            strTag = right(strTag, len(strtag) - leftfromquot - 5)
            
        loop
        
            strReplace = left(strReplace, lngStartPos -1) & strstack & right(strReplace, len(strReplace) - instr(leftfromquot, strReplace, "&gt;",0)+1)
    loop


strReplace is dus alles binnen de code tag.

Kan iemand mij vertellen wat de beste manier is om dit probleem aan te pakken en me er een klein beetje mee op weg helpen...

Alvast bedankt :)

[ Voor 10% gewijzigd door Mischa_NL op 07-09-2004 18:53 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Ik ben bang dat dit niet met regular expressions op te lossen is. Nouja, het kan wel, maar het zal nooit goed werken. Je kan beter tokenizen, is mij eens verteld in een topic wat ik zelf over dit onderwerp geopend heb:
[rml][ PHP] Universele syntax highlighter - voorbereiding[/rml].
De taal die ik daar wou gebruiken is PHP, maar de besproken technieken zouden ook in ASP wel moeten kunnen werken. :)

Overigens, je string probleem is niet zo lastig:
ASP.NET Visual Basic:
1
RegExpr.Pattern = "(""[^""].*?"")"

Dat zou moeten werken met normale quotes, replace je daarna maar de quotes door &quot;. :)

[ Voor 19% gewijzigd door NMe op 07-09-2004 20:27 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.