Avatar billede the-clint Nybegynder
02. november 2001 - 13:32 Der er 21 kommentarer og
1 løsning

Lille Reg.Exp.

Jeg skal have lavet en funktion der begrænser valget af fonte,fontfarver og fontstørrelse. Dvs lige meget hvilken size eller face der er valgt skal det laves om til: \"<font face=arial>tekst</font>

Det her er hvad jeg har lavet, men som ikke virker.
Kan nogen rette funktionen til så den virker efter hensigten?

Function fontchanger(body,font)
    Dim regEx
    If body              = \"\" Then Exit Function
    Set regEx            = New RegExp
    regEx.Global        = True
    regEx.IgnoreCase    = True
    regEx.Pattern        = server.HTMLEncode(font)
    fontchanger          = regEx.Replace(body, \"<font face=arial\")
End Function
Avatar billede eagleeye Praktikant
02. november 2001 - 15:48 #1
Denne laver en hvilken som helst <font ...> om til <font face=\"arial\">:


Function fontChange(strInput)
  Set objRegPath = New RegExp
  objRegPath.Global = true
  objRegPath.IgnoreCase = True

  objRegPath.Pattern = \"(<font[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"<font face=\"\"arial\"\">\")

  Set objRegPath = Nothing
  fontChange = strOutput
End Function
Avatar billede the-clint Nybegynder
06. november 2001 - 08:36 #2
Hej Eagleeye
Jeg er ked af og sige det, men din funktion virker ikke.
Output er altid det samme som input...
Avatar billede eagleeye Praktikant
06. november 2001 - 08:44 #3
Hmm jeg ahr nu haft den til at viker så mund ikke vi kan sige den  ikke virker til dit formål. Har jeg forståret det rigtig at du vil lave <font size=... face=... > om til <font face=\"arial\"> ?

sterng = \"Hej <font size=\"8\">er det her stort</font> eller areal?\"

response.write fontChange (sterng)
Avatar billede the-clint Nybegynder
06. november 2001 - 08:50 #4
Den skal virke sådan at uanset hvad der står mellem <font.... or  >  så skal det laves om til fx: <font face=\"arial\" size=\"8\">. Det skal bruges til at begrænse brugerens muligheder for at vælge farver og størrelser fx i artikler.
Avatar billede eagleeye Praktikant
06. november 2001 - 08:52 #5
Så mangler der i første omgang size=\"8\" i den TAG som bliver sat ind:


Function fontChange(strInput)
  Set objRegPath = New RegExp
  objRegPath.Global = true
  objRegPath.IgnoreCase = True

  objRegPath.Pattern = \"(<font[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"<font face=\"\"arial\"\" size=\"\"8\"\">\")

  Set objRegPath = Nothing
  fontChange = strOutput
End Function
Avatar billede the-clint Nybegynder
06. november 2001 - 10:11 #6
Jeg er ked af at sige det, men der sker intet med den streng jeg sender ind i funktionen. Det er ikke noget med at strengen ikke må starte <font.... ?
Avatar billede the-clint Nybegynder
06. november 2001 - 10:22 #7
Når jeg laver en response.write på : objRegPath.Pattern, får jeg et 0 retur. Jeg kan ikke lige gennemskue hvorfor, men mon ikke det er her fejlen opstår?
Avatar billede eagleeye Praktikant
06. november 2001 - 10:25 #8
Kalder du ikke functionen med:

response.write fontChange(Tekst_Sterng_Som_Skal_ændres)  ??
Avatar billede the-clint Nybegynder
06. november 2001 - 10:30 #9
Jo, funktionene har strengen som input, ingen tvivl om det. En response.write på strOutput giver mig den samme streng retur som jeg bruger som input.
Avatar billede eagleeye Praktikant
06. november 2001 - 10:32 #10
Jeg kan ikke lige teste her men kan du få denne til at virker:

sterng = \"Hej <font size=\"8\">er det her stort</font> eller areal?\"

response.write fontChange (sterng)
Avatar billede the-clint Nybegynder
06. november 2001 - 13:19 #11
Jo din funktion virker fint hvis jeg bruger den som du skriver.
Desværre virker det ikke i den sammenhæng jeg bruger den. Hvis jeg fx copy paster en tabel med noget tekst fra word eller finder et eller andet på nettet og smider det ind i mit tekstfelt. Laver en request på indholdet, kører det gennem din funktion, smider det i en database og viser det igen, så er det som før.
Jeg tror stadig det er i Pattern det går galt. Hvis jeg tar en view source, er fx mine < lavet om til &lgt. har du en ide til hvad jeg kan gøre. Det må efterhånden være 60 point værd hvis du kan hjælpe mig.
Avatar billede the-clint Nybegynder
06. november 2001 - 13:41 #12
det her er hvad jeg får ud af en view source:
<P>&lt;font size=9 &gt;blablabla&lt;/font&gt;</P>
Avatar billede eagleeye Praktikant
06. november 2001 - 13:44 #13
jeg vil prøve at kikke på det bruger du
server.htmlencode ? iden det kommer i databasen ?
Avatar billede the-clint Nybegynder
06. november 2001 - 13:53 #14
Det eneste jeg gør er:
text = Replace(Upload.Form(\"message\"), \"\'\", \"\'\'\")

Hvorefter jeg sætter
body = fontChange(text)
Avatar billede the-clint Nybegynder
07. november 2001 - 11:45 #15
Hej Eagleeye, ville du prøve at kigge på den her?
Avatar billede eagleeye Praktikant
07. november 2001 - 16:44 #16
JA men jeg kan ikke lige så den til at virke... Prøver lige noget ..
Avatar billede eagleeye Praktikant
07. november 2001 - 16:49 #17
Jeg har prøvet at udvide functionen lidt, den er også nød til at lave &lt;/font&gt; om til </font> for det virker i browseren:


Function fontChange(strInput)
  Set objRegPath = New RegExp
  objRegPath.Global = true
  objRegPath.IgnoreCase = True

  objRegPath.Pattern = \"(<font[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"<font face=\"\"arial\"\" size=\"\"9\"\">\")
 
  objRegPath.Pattern = \"(\\&lt\\;font[\\w\\.\\_\\=\\\"\"\\d\\s]*\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"<font face=\"\"arial\"\" size=\"\"9\"\">\")

  objRegPath.Pattern = \"(\\&lt\\;/font\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"</font>\")

  Set objRegPath = Nothing
  fontChange = strOutput
End Function
Avatar billede the-clint Nybegynder
08. november 2001 - 10:07 #18
Juhuu, det ser ud til at virke. Der mangler blot at der godt kan være noget tekst inden fonttagget. Lige nu virker det kun hvis det står som det første på linien.
Avatar billede eagleeye Praktikant
08. november 2001 - 23:25 #19
Jeg er ikke med, den konverete da selom der er tekst foran eller mener du at teksten foran et font-tag har en default størrelse?
Avatar billede the-clint Nybegynder
09. november 2001 - 09:54 #20
Sorry du har helt ret. Det virker som det skal. Problemet er et andet. Jeg har udvidet funktionen som nu også gerne skal fjerne span tags. Mit problem er bare at har jeg:

<font size> sdfsdf </font>

<span size> sfsd </span>

som input, er det kun enten span eller font tagget der bliver ændret, alt efter hvilken pattern der står først.


Function fontChange(strInput)
  Set objRegPath = New RegExp
  objRegPath.Global = true
  objRegPath.IgnoreCase = True

  objRegPath.Pattern = \"(<span[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"\")
 
  objRegPath.Pattern = \"(\\&lt\\;span[\\w\\.\\_\\=\\\"\"\\d\\s]*\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"\")

  objRegPath.Pattern = \"(\\&lt\\;/span\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"\")
 
  objRegPath.Pattern = \"(<font[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"<font color=\" & color & \" face=\" & font & \">\")
 
  objRegPath.Pattern = \"(\\&lt\\;font[\\w\\.\\_\\=\\\"\"\\d\\s]*\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"<font color=\" & color & \" face=\" & font & \">\")

  objRegPath.Pattern = \"(\\&lt\\;/font\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"</font>\")
 
  Set objRegPath = Nothing
  fontChange = strOutput
End Function 
Avatar billede eagleeye Praktikant
09. november 2001 - 11:20 #21
Function fontChange(strInput)
  Set objRegPath = New RegExp
  objRegPath.Global = true
  objRegPath.IgnoreCase = True

  objRegPath.Pattern = \"(<span[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strInput, \"\")
 
  objRegPath.Pattern = \"(\\&lt\\;span[\\w\\.\\_\\=\\\"\"\\d\\s]*\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"\")

  objRegPath.Pattern = \"(\\&lt\\;/span\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"\")
 
  objRegPath.Pattern = \"(<font[\\w\\.\\_\\=\\\"\"\\d\\s]*>)\"
  strOutput = objRegPath.Replace(strOutput, \"<font color=\" & color & \" face=\" & font & \">\")
 
  objRegPath.Pattern = \"(\\&lt\\;font[\\w\\.\\_\\=\\\"\"\\d\\s]*\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"<font color=\" & color & \" face=\" & font & \">\")

  objRegPath.Pattern = \"(\\&lt\\;/font\\&gt\\;)\"
  strOutput = objRegPath.Replace(strOutput, \"</font>\")
 
  Set objRegPath = Nothing
  fontChange = strOutput
End Function 
Avatar billede the-clint Nybegynder
09. november 2001 - 11:47 #22
Tak for hjælpen. Jeg opretter et spørgsmål til med de ekstra point du skal have for din hjælp.
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