Avatar billede rasmusp Nybegynder
27. december 2000 - 01:18 Der er 26 kommentarer og
1 løsning

Fjern www, @ og telefon numre!

Hej!

Jeg har et felt i databasen som jeg HTML encoder ved visning uden problemer.

Næste step er at brugeren i feltet heller ikke må indtaste www, e-mail adresser og telefonnumre!  Er der nogen der har en god idé til validering af dette enten med javascript ved indtastning eller med asp ved visning?
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:22 #1
Du kan bruger en Regular Expression søgning i en streng efter email adresser og tlf. numre.  \"www\" og \"@\" kan laves med JavaScript. Jeg laver/finder lige nogle eksempler
Avatar billede madd Nybegynder
27. december 2000 - 01:24 #2
Hvad vil du have? Et script der fjerner \'www\' og erstatter det med \' \'? Hvis ja, kan du vel bare lave en:
Replace(rs(DITFELT), \"www.\", \"\")
Så vil www.web.dk blive til web.dk

???
Jeg fatter ikke dit spm.?

/MadD
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:26 #3
Jeg kan ikke selv lave disse regexp\'s men denne her checker for om der er email adresser i en streng.

<%
    Function CheckEmail(strStreng)
        Set objRegExpEMail = New RegExp

        objRegExpEMail.Pattern = \"([\\w\\._-]+@[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"
        objRegExpEMail.Global = True
        objRegExpEMail.IgnoreCase = True

        CheckEmail = (objRegExpEMail.Test(strStreng) = True)
       
        Set objRegExpEMail = Nothing
    End Function

response.write CheckEmail(\"Eksperten ER bare det fedeste!\") \' false
response.write CheckEmail(\"Skriv til mig på e@tdaugaard.dk .. ik\'os ?`\") \' true
%>
Avatar billede madd Nybegynder
27. december 2000 - 01:29 #4
Hvaaa.... er der nogle kloge hoveder der kan fortælle mig hvad det der script laver..(andet end at tjekke for e-mail)

/MadD
Avatar billede madd Nybegynder
27. december 2000 - 01:31 #5
Hmm...bikser lige end bedre www checker sammen....
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:32 #6
madd:> der laver ikke andet :-)
Det er en regular expression. Det er noget avanceret streng manipulation/matching system/søgning.
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:35 #7
www. og @ kan du lave med et JS...

<script>
  function formvalid(theform) {
    if (theform.ditfelt.value.indexOf(\"www.\")>-1 || theform.ditfelt.value.indexOf(\"@\") >-1) {
      alert(\"Feltet indeholder enten www. eller et @ tegn!\");
      return (false);
    }

    return (true);
  }
</script>

<form name=\"noget\" action=\"yeah.rite\" onsubmit=\"return formvalid(this);\">
<input type=\"text\" name=\"ditfelt\">
</form>
Avatar billede madd Nybegynder
27. december 2000 - 01:40 #8
tda>> \'der laver ikke andet\'
Hvad mener du...?
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:41 #9
jeg mener at det script jeg skrev med CheclEmail .. det KAN ikke andet end at checke om en streng indeholder en/flere email adresser.
Avatar billede madd Nybegynder
27. december 2000 - 01:48 #10
oohh.... nu kommer der et der sletter ALLE! igen ALLE! www adresser: (Originalt af Dino Patti, Netcoder.dk)



---------------------------------------------
<%
\' ->AutoHighlight<-
\' Source lavet af Dino C. J. Patti - (C)Copyright 2000 :)
\' Dato: 22-06-2000
\' Netcoders -> Community ID = 662
\' E-mail: dino@nordmark.dk
\'
\' Denne sourcekode er lavet specielt til konkurrencen på www.netcoders.dk
\'
\' Sourcen er lidt lang, men den er ret flexibel, og der er ikke rigtig
\' noget af koden der kan undværes, men send gerne forslag til
\' forbedringer, optimeringer, mangler og fejl :) Eller anden respons.:)..
\'
\' Denne sourcekode må gerne bruges frit, dog ikke commercielt uden aftale.

Function autoHighlight(Lin)
\' Indstillinger -----
link_color = \"#3366ff\"        \' Hvad farve skal linket have
link_target = \"_blank\"        \' Link Target
ugyldigeTegn = \" _:\\,;/\'?\" \' Ugyldige tegn omkring punktummer
StartTegn = \" ,;\"\"<>!\"        \' Tegn der starter et link fx. <H1>www.spise.dk</H1>
SlutTegn = \" ,;\"\"<>!\"        \' Tegn der slutter et link fx. www.partynet.dk!
MaxDomain = 3                \' Max. tegn i domain navn fx \"com\"    (3=default)   
MaxLinks = -1                \' (Bruges til debug) Hvor mange links skal \"HighLight\"\'es per streng (-1 = uendelig)
Pointer = 1                \' Ved hvad tegn skal der startes (1=default)

\' Skal der chekes efter registrede domæner (1=ja & 0=nej)
RegON = 1                   
\' De registrede domæner:
RegDomain = \"dk;com;net;org;gov;edu;uk;no;se;de;as;ru;sk;ch;it;nl;fr;hu;to;au;tw;jp;\"

\' Indstillinger slut -----
 
\' Begynd løkke
Do until t = MaxLinks
\' Nulstilling af de variable:
NoLink = False            \'True hvis det fundne tekst ikke er et link
TrueLink = False        \'True hvis linket begynder med http://
Linkhtml = \"\"
PathStart = 0
PortStart = 0
PointerADD = 0

\' Her findes \"midten\" af linket
middle = Instr(pointer,lin,\".\")
temp = Instr(pointer,Lcase(lin),\"http://\")

\' Dette sørger for at finde det første af enten \".\" eller \"http://\"
If temp < middle and temp <> 0 then middle = temp+6:TrueLink = true
If middle = 0 and temp > 0 then middle = temp+6:TrueLink = true

\' Hvis \".\" eller \"http://\" ikke er fundet skal løkken stoppe
If Middle = 0 then exit do

\' Her findes starten af linket (defineret udfra start tegnene)
start = 1
For i = 1 to len(StartTegn)
  temp = InStrRev(Lcase(lin),mid(StartTegn,i,1),Middle)
  If temp => start and temp <> 0 then start = temp+1
next

\' Her findes slutningen af linket (defineret udfra slut tegnene)
slut = len(lin)
For i = 1 to len(SlutTegn)
  temp = Instr(Middle,Lcase(lin),mid(SlutTegn,i,1))
  If temp <= slut and temp <> 0 then slut = temp-1
next

\'Checker efter \"?\" og \".\" de må gerne stå i midten af linket, men ikke i slutningen
\' Fx. \"www.nordmark.dk?????\" eller \"www.partynet.dk...\"
tegn = Mid(lin,slut,1)
do until (tegn <> \".\" and tegn <> \"?\") or slut = 1
  If tegn = \".\" or tegn = \"?\" then slut=slut-1:PointerADD = PointerADD+1
  tegn = Mid(lin,slut,1)
loop

\'Hvis det kun er et \".\" der er fundet og linket ikke begynder med http:// skal det testes ekstra
If TrueLink = False then

\' Her testes om punktummet står i starten eller i slutningen af strengen
If Middle = 1 then noLink = true:start=slut+1
If Middle = len(lin) then noLink = true:start=slut+1
\' Her testes efter ugyldige tegn, ved siden af punktummet
If nolink <> True then
  TegnF = Mid(lin,middle-1,1)
  TegnE = Mid(lin,middle+1,1)
  For i = 1 to len(ugyldigeTegn)
  If TegnF = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
  If TegnE = mid(ugyldigeTegn,i,1) then noLink = true:start=slut+1:exit for
  next
end if

\' Her findes domæne navnet og længden chekes -> fx:\".dk\" \".com\" \".uk\"
\' De første if-sætningr checker om der er andet efter efter server navnet
\' som fx. port nr. eller en sti
If nolink <> True then
  ServerSlut = Slut
  temp = Instr(Middle,Lcase(lin),\"/\")
  If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PathStart=Temp
  temp = Instr(Middle,Lcase(lin),\":\")
  If temp <= ServerSlut and temp <> 0 then ServerSlut = temp-1:PortStart=Temp+1
  temp = InstrRev(lin,\".\",ServerSlut)
  Domain = mid(Lcase(lin),temp+1,ServerSlut - temp)
  Servername = mid(lin,start,ServerSlut-start+1)
  If len(domain) > MaxDomain then noLink = true:start=slut+1 \'Max tegn
  If len(domain) = 0 then noLink = true:start=slut+1 \'Udrydder fx. www.spise./index.htm

\'Checker efter steder i servernavnet hvor der er mere end et punktum
  If Instr(Servername,\"..\") <> 0 then noLink = true:start=slut+1
end if
 
\' Her chekes, hvis RegON = 1, om domænenavnet er korrekt.
If RegON = 1 and nolink <> true then
  RegDomains = split(Lcase(RegDomain),\";\")
  nolink = true
  For i = 0 to Ubound(RegDomains)
    If RegDomains(i) = Domain then nolink = false:exit for
  next
  If nolink = true then start=slut+1
end if

else
\'Hvis der står \"xxhttp://\", er det kun fra \"http://\" der skal highlightes:)
start = Instr(pointer,Lcase(lin),\"http://\")
End if

\'Dette er nogen af de ting der er mulige at spytte ud til hvert link:
\'Response.write \"---------------------<BR>\"
\'Response.write \"LinkNr: \"&t&\"<BR>\"
\'Response.write \"Starter ved tegn: \"&Start&\"<BR>\"
\'Response.write \"Slutter ved tegn: \"&Slut&\"<BR>\"
\'Response.write \"Domænenavn: \"&Domain&\"<BR>\"
\'Response.write \"Servernavn uden path: \"&ServerName&\"<BR>\"
\'If PathStart<>0 then Response.write \"Path efter servernavn: \"&mid(lin,pathStart,slut-pathstart+1)&\"<BR>\"

\'Hvis det fundne mulige link har bestået alle \"prøverne\" skal det udskiftes med html tags
If noLink <> True then
If Lcase(Mid(lin,start,7)) = \"\" then
  LinkHtml = \"\"
else
  LinkHtml = \"\"
End If
  lin = Left(lin,start-1) & LinkHtml & right(lin,len(lin)-slut)
  t=t+1
End If

\'Pointeren sættes til næste logiske start
pointer = start + len(LinkHtml)+PointerADD
loop

autoHighlight = lin
End function

%>
---------------------------------------------
Avatar billede tdaugaard Nybegynder
27. december 2000 - 01:52 #11
madd:>

flg. script fjerne http://www.blabla.xx/, www.blabla.xx og noge@jarh.xx fra en given streng:

Function FixString(strInput)
    Set objRegExpHTTP1 = New RegExp
    Set objRegExpHTTP2 = New RegExp   
    Set objRegExpEMail = New RegExp

    objRegExpHTTP1.Pattern = \"(http|ftp)(:\\/\\/[\\w\\._-]+\\.[\\w\\._-]+\\S*)\"
    objRegExpHTTP2.Pattern = \"(^|[^\\/])(www[^\\.\\s]?\\.[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"
    objRegExpEMail.Pattern = \"([\\w\\._-]+@[\\w\\._-]+\\.[A-Za-z]{2,3}\\S*)\"

    objRegExpHTTP1.Global = True
    objRegExpHTTP2.Global = True
    objRegExpEMail.Global = True

    objRegExpHTTP1.IgnoreCase = True
    objRegExpHTTP2.IgnoreCase = True
    objRegExpEMail.IgnoreCase = True

    strOutput = objRegExpEMail.Replace(strInput, \"\")
    strOutput = objRegExpHTTP1.Replace(strOutput, \"\")
    strOutput = objRegExpHTTP2.Replace(strOutput, \"\")
       
    Set objRegExpHTTP2 = Nothing
    set objRegExpHTTP1 = Nothing
    Set objRegExpEMail = Nothing

    FixString = strOutput
End Function
Avatar billede madd Nybegynder
27. december 2000 - 02:20 #12
Avatar billede madd Nybegynder
27. december 2000 - 02:21 #13
Woow...super over flood af min e-mail....
Avatar billede tdaugaard Nybegynder
27. december 2000 - 02:21 #14
ehm .. hvad skal den fjerne <bla></bla> for ?
Avatar billede madd Nybegynder
27. december 2000 - 02:25 #15
Ved det sq ikke..... lol
Avatar billede madd Nybegynder
27. december 2000 - 02:26 #16
Hvor lang tid sidder du oppe og \'overvåger\' eksperten? hehe...jeg syns sq altid du er på!

/MadD
Avatar billede tdaugaard Nybegynder
27. december 2000 - 02:27 #17
ha ha .. men hovedsagen er at den KAN :o)
Det er sku ligemeget om man så for brug for det *GG*
Avatar billede madd Nybegynder
27. december 2000 - 02:28 #18
Ja....korrekt!
Avatar billede tdaugaard Nybegynder
27. december 2000 - 02:28 #19
madd:> \"overvåger\" *S* jeg har \"bare\" outlook åben og så sker det tilfældigvis en gang hvert ½ minut at jeg kigger om der er kommet nogle mails til mig *LÅL*
ja .. jeg er ALTID på .. ~13:20:00 og har hentet 400 MB ligenu .. :-)
Avatar billede madd Nybegynder
27. december 2000 - 02:29 #20
Hehe....hvad henter du?
Avatar billede madd Nybegynder
27. december 2000 - 02:30 #21
Puha... jeg glæder mig ikke til at skulle åbne min mail...har du forresten icq?
Avatar billede tdaugaard Nybegynder
27. december 2000 - 02:34 #22
madd:> <tys tys> Road Trip DivX DVD rip på 685 MB </tys tys>
ICQ .. og det spurgte du om ? *S* se\'følig har jeg det: #4033867
Avatar billede rasmusp Nybegynder
28. december 2000 - 20:06 #23
Hej madd og tdaugaard!

Tak for jeres indlæg, som desværre ikke helt er det jeg var ude efter, men så alligevel. Funktionen som madd havde fundet på netcoders er tæt på og så alligevel ikke.

Efter nærmere overvejelse vil javascript ikke være optimalt, så det jeg har brug for er:

noget ASP kode der kan fjerne alle...

1) www adresser
2) e-mail adresser
3) telefonnumre (f.eks. 8888 8888, 8888-8888,88-88-88-88,88 88 88 88 eller 8888888)

...fuldstændig fra et tekstfelt der submittes fra en form og bliver INSERET INTO et felt i en SQL database.

Nogle bud?
Avatar billede tdaugaard Nybegynder
28. december 2000 - 20:53 #24
rasmus:> Det du siger passer slet ikke. Min RegExp funktion virker helt fint med at fjerne mail adresse, samt http adresser (hvis det ønskes).

Dit krav med at kunne fjerne tlf. numre er umuligt at efterkomme hvis ikke du kan værte sikker på formatet af tlf. numret. Hvis du kan være sikker på at det f.eks. er \"88888888\" så kan du klare det med endnu en RegExp, men der skal du have en anden til at skrive regular expression\'en (altså selve search pattern)

Forøvrigt, hvorfor er JavaScript ikke optimalt ?
Avatar billede rasmusp Nybegynder
28. december 2000 - 21:10 #25
Hej tdaugaard,

Mht. RegExp har du ret, dog vil jeg gerne gøre det hele på én gang (både fjerne www, @ og tlf.).

JavaScript er ikke optimalt da jeg tror (nogle) vil prøve at snyde sig frem til en kombination hvor JavaScriptet ikke fanger dem. Lad os sige at javascriptet fanger www.x.dk så kunne man som bruger skrive sådan:
Find min hjemmeside på www. mysite .dk (fjerne mellemrum foran og efter mysite).

Det er ikke paranoia, men nogle vil bare snyde selvom man skriver de ikke må XXX.

Hvis man i stedet fjerner ulovlige data EFTER indtastning vil brugeren aldrig vide at de er blevet fjernet.
Avatar billede tdaugaard Nybegynder
28. december 2000 - 21:20 #26
det er rigtigt .. men du kan ikke fjerne tlf. nr. på den måde som du vil.
Uden en RegExp kan du splitte en streng ved \" \", gå arrayet igennem og checke alle elementer der er 8 tegn lange og hvis IsNumeric(streng) er True så har du højst sandsynlig et tlf. nr. som du kan slette.
Avatar billede tdaugaard Nybegynder
29. december 2000 - 02:50 #27
rasmusp:> du må nok hellere lige lukke spørgsmålet her nu vi har fået klaret den i det andet.

Til andre der kommer forbi der evt. skal bruge det samme kan løsningen findes på:

http://www.eksperten.dk/spm/40570
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