TheRealL Skrevet 18. mai 2008 Skrevet 18. mai 2008 Altså det jeg trenger er en kode som kan matche dette: Site[X]:SiteID.SiteID.SiteID Hvorav SiteID skal være så mange ganger som X tilsier, feks Site[4]:1.4.6.8 Jeg har startet så vitt på Regex Coden: site\[([0-9]*)]: Men kommer ikke vidre grunnet manglende kompetanse, så derfor spør jeg om hjelp.
Raring Skrevet 19. mai 2008 Skrevet 19. mai 2008 (endret) Gjorde et lite forsøk, kan sikkert gjøres lettere. <? function checkid($string) { //Denne regexen vil matche så lenge det er skrevet på riktig format og finne Site-nummeret $regex = "/Site\[([0-9]*)\]:(\[[0-9]\].)*/"; //Denne regexen vil bare matche hvis det er like mange ID`er som Site-nummeret tilsier $regex_2 = "/Site\[([0-9]*)\]:(\[[0-9]\].){{$matches[1]}}/"; //Henter ut Site-nummeret med $regex preg_match($regex, $string, $matches); //Denne sjekker stringen opp mot $regex_2 if(preg_match($regex_2, $string)) { //Returnerer true hvis kravene ovenfor oppfylles return true; } else { //Returnerer false hvis kravene ovenfor ikke oppfylles return false; } } //Dette eksempelet vil returnere 1 echo checkid("Site[3]:[6].[4].[5]."); ?> Edit: I følge mitt hode burde denne regexen holde: Site\[([0-9])\]:(?:(?:\[[0-9]\])\.){\1} dessverre nekter den å interprete de siste krølle-klammene som at den forrige parantesen så mange ganger som reference-1 sier. Den leter bare "{\1}" bokstavelig på slutten. Slik at dette ville ha validert: Site[2]:[2].{\1} ! Noen som kan forklare meg hvorfor det er sånn og hva jeg må gjøre for å få den slik jeg (og trådstarter vil? Endret 20. mai 2008 av Raring
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å