|
| Reg exp, Ucase tags til Lcase tags Fra : Jacob Nielsen |
Dato : 10-07-03 20:24 |
|
Hej
Mit problem er at jeg har et formular felt der bliver submittet med nogle
html tags. Disse er ucase, f.eks. <IMG.. osv., men jeg vil gerne ha' dem til
at være lcase så img tag'en istedet vil se således ud: <img..
Til dette har jeg lavet en funktion der finder alle html tags i det
submittede, men jeg har store problemer med derefter at konvertere dem til
lcase. Funktionen ser således ud:
Function funcLCaseHTMLTags(strHTML)
Dim objRegExp, strTagLcase
strTagLcase = strHTML
Set objRegExp = New objRegExp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "<[^>]*>"
strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase))
Set objRegExp = Nothing
funcLCaseHTMLTags = strTagLcase
End Function
Problemet består i at funktionen returnerer flere dubletter af det der
bliver parset til den. Der sker selvfølgelig fordi at jeg i linien
strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase)) replacer en
html-tag med hele indholdet af strengen istedet for bare at konvertere den
tag til lcase, men hvordan skal jeg bære mig ad med det?
Mvh. Jacob
| |
Torben Brandt (11-07-2003)
| Kommentar Fra : Torben Brandt |
Dato : 11-07-03 09:00 |
|
Jacob Nielsen wrote:
> Hej
>
> Mit problem er at jeg har et formular felt der bliver submittet med nogle
> html tags. Disse er ucase, f.eks. <IMG.. osv., men jeg vil gerne ha' dem til
> at være lcase så img tag'en istedet vil se således ud: <img..
>
> Til dette har jeg lavet en funktion der finder alle html tags i det
> submittede, men jeg har store problemer med derefter at konvertere dem til
> lcase. Funktionen ser således ud:
>
> Function funcLCaseHTMLTags(strHTML)
> Dim objRegExp, strTagLcase
>
> strTagLcase = strHTML
>
> Set objRegExp = New objRegExp
> objRegExp.IgnoreCase = True
> objRegExp.Global = True
>
> objRegExp.Pattern = "<[^>]*>"
>
> strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase))
>
> Set objRegExp = Nothing
>
> funcLCaseHTMLTags = strTagLcase
> End Function
>
> Problemet består i at funktionen returnerer flere dubletter af det der
> bliver parset til den. Der sker selvfølgelig fordi at jeg i linien
> strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase)) replacer en
> html-tag med hele indholdet af strengen istedet for bare at konvertere den
> tag til lcase, men hvordan skal jeg bære mig ad med det?
Jeg tror følgende vil kunne hjælpe dig, men det er ikke så elegant en
løsning :)
Du bruger .Execute-funktionen i stedet for. Så får du en collection af
Match-objekter, der hver indeholder ét af HTML-taggene.
Et Match-objekt indeholder også information om hvor i stregen det blev
fundet og hvor lang Match'en er, så for hvert Match-objekt kan du tage
stregene i den oprindelige streng op til starten af det fundne
(Match.FirstIndex), så indsætter du LCase(Match.Value) og springer
Match.Length frem i den oprindelige streng, inden du tager resten af den.
Håber det giver lidt inspiration,
Torben
| |
Jacob Nielsen (11-07-2003)
| Kommentar Fra : Jacob Nielsen |
Dato : 11-07-03 16:11 |
|
"Torben Brandt" <name@domain.invalid> wrote in message
news:3F0E6E73.9040401@domain.invalid...
> Jacob Nielsen wrote:
> > Hej
> >
> > Mit problem er at jeg har et formular felt der bliver submittet med
nogle
> > html tags. Disse er ucase, f.eks. <IMG.. osv., men jeg vil gerne ha' dem
til
> > at være lcase så img tag'en istedet vil se således ud: <img..
> >
> > Til dette har jeg lavet en funktion der finder alle html tags i det
> > submittede, men jeg har store problemer med derefter at konvertere dem
til
> > lcase. Funktionen ser således ud:
> >
> > Function funcLCaseHTMLTags(strHTML)
> > Dim objRegExp, strTagLcase
> >
> > strTagLcase = strHTML
> >
> > Set objRegExp = New objRegExp
> > objRegExp.IgnoreCase = True
> > objRegExp.Global = True
> >
> > objRegExp.Pattern = "<[^>]*>"
> >
> > strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase))
> >
> > Set objRegExp = Nothing
> >
> > funcLCaseHTMLTags = strTagLcase
> > End Function
> >
> > Problemet består i at funktionen returnerer flere dubletter af det der
> > bliver parset til den. Der sker selvfølgelig fordi at jeg i linien
> > strTagLcase = objRegExp.Replace(strTagLcase, lcase(strTagLcase))
replacer en
> > html-tag med hele indholdet af strengen istedet for bare at konvertere
den
> > tag til lcase, men hvordan skal jeg bære mig ad med det?
>
> Jeg tror følgende vil kunne hjælpe dig, men det er ikke så elegant en
> løsning :)
>
> Du bruger .Execute-funktionen i stedet for. Så får du en collection af
> Match-objekter, der hver indeholder ét af HTML-taggene.
> Et Match-objekt indeholder også information om hvor i stregen det blev
> fundet og hvor lang Match'en er, så for hvert Match-objekt kan du tage
> stregene i den oprindelige streng op til starten af det fundne
> (Match.FirstIndex), så indsætter du LCase(Match.Value) og springer
> Match.Length frem i den oprindelige streng, inden du tager resten af den.
>
> Håber det giver lidt inspiration,
Det gør det i hvert fald. Mange tak for svaret :)
Mvh. Jacob
| |
|
|