Avatar billede Slettet bruger
16. april 2004 - 14:55 Der er 9 kommentarer og
1 løsning

hjælp til eregi

hej jeg fatter så utroligt lidt af eregi
så hvis i samtidigt gider at skrive forklaring til hjælpen, vil jeg være meget taknemlig

jeg har allerede en som jeg fandt her på eksperten (Jeg skal bruge 2)

eregi("^[a-z0-9]+$",$password)

hvilket betyder at a-z og 0-9 er tilladt... men problemet er @!"#¤%&/()=? disse skal IKKE være tilladt..

desuden skal jeg bruge en hvor a-z og 0-9 er tilladt MEN også # og @ (kun disse 2 special tegn)

På forhånd tak (den er vel næppe 60 point værd men pga jeg håber på forklaring bliver den på 60)
Avatar billede Slettet bruger
16. april 2004 - 15:02 #1
ok fik faktisk løst den første med at putte ! foran

elseif (!eregi("^[a-z0-9]+$",$password)) {
echo 'password må kun indeholde tegnene 0-9 + a-z';
}
Avatar billede the_fox Nybegynder
16. april 2004 - 15:08 #2
Du kan også bare skrive eregi("[a-z0-9]+$",$password) ^ betyder not
Avatar billede dennismp Nybegynder
16. april 2004 - 15:10 #3
Jeg bruger preg_match istedet for eregi, men de gør basalt set det samme.

preg_match('#^[a-z0-9]+$#',$password) )

/ = delimiter, et startssymbol, der skal være en tilsvarende afslutningssymbol
^ = betyder linjen starter med
a-z = a b c d e f..
0-9 = 0 1 2 3 4 ...
[a-z0-9] = et lille bogstav eller tal
+ = 1 eller flere gentagelser.
^[a-z0-9]+ = en linje der starter med et lille bogstav eller tal
$ = slutningen af linjen
^[a-z0-9]+$ = en linje der starter med 1 eller flere småbogstaver eller cifre indtil slutningen af linjen.

if( preg_match('/^[a-z0-9]+$/',$password) ) ) {
  print "Password ok";
}
else {
  print "Password er ikk ok";
}

Hvis du vil tilføje # og @ ekstra, så skal de bare ind efter 0-9:
preg_match('#^[a-z0-9@#]+$#',$password) )
Avatar billede dennismp Nybegynder
16. april 2004 - 15:13 #4
tilføj evt "i" efter sidste # for at få den til ignorere store/små bostaver.
preg_match('#^[a-z0-9]+$#i',$password) )

ellers kan man bare tilføje A-Z:
preg_match('#^[a-zA-Z0-9]+$#',$password) )

Gruden til at jeg bruger preg_match er at jeg har brugt perl forhen, og så skulle de (ifølge manualen) være en smule hurtigere.
Avatar billede Slettet bruger
16. april 2004 - 15:18 #5
mange tak dennis... men lige en ting

preg_match('#^[a-z0-9]+$#',$password)

det virker fint nok men jeg fatter ikke lige det sidste +$#

hvorfor have det med?
Avatar billede Slettet bruger
16. april 2004 - 15:28 #6
Dennismp kom med en ganske god forklaring, men glemte lige at nævne, at man kan bruge andre tegn end / som startsymbol. Han brugte # istedet, og skal derfor bruge en # til sidst også.
Avatar billede Slettet bruger
16. april 2004 - 15:39 #7
godt du lige sagde det sandbox jeg fik nemlig en fejl da jeg forsøgte med

elseif (!preg_match('#^[a-zA-Z0-9@#]+$#',$servernavn)) {

så det ændrede jeg til

elseif (!preg_match('/^[a-zA-Z0-9@#]+$/',$servernavn)) {

og så virkede det. :)
Avatar billede dennismp Nybegynder
16. april 2004 - 15:48 #8
Ah, det var meningen at det hele skulle have været med / istedet for #. :)

Nå, men altså, delimiter kan sagents være andet end # eller / .. bare de er ens :)
Avatar billede Slettet bruger
16. april 2004 - 15:53 #9
jeg takker for den gode hjælp nu tror jeg det sidder fast i hovedet :)
Avatar billede dennismp Nybegynder
16. april 2004 - 15:58 #10
hvis du har lyst, så kan du jo kigge lidt på disse sider. Der er lidt info om regulære udtryk:
http://etext.lib.virginia.edu/helpsheets/regex.html
http://www.regular-expressions.info/reference.html
http://regexlib.com/ (en samling af udtryk)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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