Vindstille Skrevet 23. april 2006 Del Skrevet 23. april 2006 Kan noen forkare meg hvordan preg_match() funker evt. gi meg en god guide på det. Har søkt litt men skjønner ikke helt systemet i det folk skriver. F.eks: preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $matches); $host = $matches[1]; Hvorfor er alle disse rare tegnene der? Hva er $matches til? Hvordan lager man et script som kun tillater variabler med a-z og 0-9? Lenke til kommentar
neivoll Skrevet 23. april 2006 Del Skrevet 23. april 2006 (endret) preg_match bruker regular expressions til å sjekke formatet på strings. Les mer om regular expressions blant annet her og her. For å sjekke at en variabel kun inneholder a-z og 0-9 er vel det greieste å bruke ereg, noe a la dette: if (ereg("^[a-z0-9]+$",$string) { .... Tar forbehold om feil her Regular expressions kan være vanskelige å forstå, selv synes jeg det ser ut som en mølje fremdeles, men det kan være veldig nyttig også. edit: Og når du lurer på en funksjon i php er det som regel nyttig å slå opp i php-maualen: http://no.php.net/preg_match Endret 23. april 2006 av anners Lenke til kommentar
Cucum(r) Skrevet 23. april 2006 Del Skrevet 23. april 2006 http://www.ilovejackdaniels.com/mod_rewrite_cheat_sheet.png er også ganske fin å ha. Lenke til kommentar
Vindstille Skrevet 23. april 2006 Forfatter Del Skrevet 23. april 2006 Tusen takk. Skal sette meg ned i kvel og se på det. Lenke til kommentar
Vindstille Skrevet 23. april 2006 Forfatter Del Skrevet 23. april 2006 Funt ut av det nå. Litt vanskelig guide. Men den gjorde nytten. Fant ut at jeg måtte bruke dette: if(preg_match("/[^a-zA-Z0-9]/", $check)) { error("Du kan ikke bruke annet enn bokstavene a-z og tallene 0-9 i brukernavn feltet"); } Lenke til kommentar
oycob Skrevet 24. april 2006 Del Skrevet 24. april 2006 for å få regexpen 2 tegn kortere kan du skrive: "/[^a-z0-9]/i" ... i-en på slutten står naturligvis for case-insensitive =) Lenke til kommentar
Vindstille Skrevet 25. april 2006 Forfatter Del Skrevet 25. april 2006 for å få regexpen 2 tegn kortere kan du skrive: "/[^a-z0-9]/i" ... i-en på slutten står naturligvis for case-insensitive =) 5982590[/snapback] Ok, takk for hjelpen! Lenke til kommentar
NH Skrevet 25. april 2006 Del Skrevet 25. april 2006 ereg() funksjonene er ikke annbefalt da perl regXPn er raskere. dvs preg funksjonene. uansett manualen er vår venn: Perl regXP: http://no.php.net/manual/en/reference.pcre...tern.syntax.php Pattern modifiers (Som f.eks i en på eksemplet over som betyr case-insensitiv) http://no.php.net/manual/en/reference.pcre...n.modifiers.php RegXp er veldig "treg" måte å søke i en string på og burde utelukkende _kun_ benyttes når det er nødvendig, dvs avanserte søk som validering av e.post, om en streng har en viss struktur etc. For sjekking om en variabel er en integer, en string eller om den består kun av bokstaver/tall samt enkel replace har vi egne funksjoner for. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå