Ga naar inhoud

postcode en reguliere expressies


anoniem

Aanbevolen berichten

Na lang klooien met regexps, samen met het boek php4 zonder stress :evil: krijg ik email-, website-controles prima voor elkaar. Alleen postcode lukt niet. 1234AA wordt geaccepteerd maar 1234 AA niet. Dan maar "krijgen" van iemand anders :lol: Via php.net en phpfreakz.nl kwam ik aan de volgende expressie: [code:1:a0a778af54] ^[1-9][0-9]{3}\s?[a-zA-Z]{2}$ [/code:1:a0a778af54] Op die site werd verteld dat hij 1234AA, 1234aa, 1234 AA, en 1234 aa zou accepteren. Ook hier weer wordt 1234 AA NIET geaccepteerd, de spatie moet wel kunnen mogen! Daarna ben ik gaan zoeken wat [code:1:a0a778af54]\s?[/code:1:a0a778af54] doet maar dat kan ik niet vinden. Ik gebruik (nu nog) ereg() wat gaat er fout?
Link naar reactie
\s? zegt eigenlijk, ÉÉN whitespace character (dus een linebreak (\n), spatie, tab(\t) etc.) of GEEN. ?-teken geeft aan dat het voorafgaande teken 1 keer mag voorkomen, of helemaal niet. (En daarnaast is het nuttig om eens ff naar die site te gaan die Remytje gepost heeft, erg nuttig, behandelt zo'n beetje alles wat je moet weten, daarna komt het gepuzzel :D) Dus eigenlijk zou ie het wel moeten doen. Ik weet niet of het volgende werkt in Ereg maar het valt altijd te proberen (de preg_* functies zijn overigens sneller) ^[1-9][0-9]{3}(\s?)[a-zA-Z]{2}$
Link naar reactie
[quote:e7aba36fe8="Bill Gates"]Nog beter: de maxlength van je postcode textfield op 6 zetten, dan heb je geen ruimte voor de spatie...[/quote:e7aba36fe8] En daarnaast nog checken in PHP of de string lengte niet over de 6 heen gaat : if(strlen($postcode) > 6) { // postcode te lang }else{ // correct, regular expression hier } Men kan namelijk extern een form gebruiken (exact hetzelfde form, behalve dat maxlength attribuut), en dan kun je die 6 charachter limit voorbij.
Link naar reactie
[quote:e938849cc9="Bill Gates"]Nog beter: de maxlength van je postcode textfield op 6 zetten, dan heb je geen ruimte voor de spatie...[/quote:e938849cc9] Ik zou ze graag uniform in de database willen zetten. Allemaal MET een spatie, zodat het wat netter wordt met printen. ook de kleine letters bv aa, wil ik dan vervangen door AA. Als er geen spatie tussen staat voeg ik die later ook toe, ik wil alleen niet dat de gebruiker wordt lastiggevallen met geneuzel over een spatie.. In het formulier staat de maxlength op 7 [edit] verrek nu snap ik je bedoeling pas... :oops: :oops: , en dan een spatie zelf toevoegen ...... hmm, maar het moet toch kunnen?? [/edit]
Link naar reactie
[quote:5b1ad04727="sander16v"]Na lang klooien met regexps, samen met het boek php4 zonder stress :evil: krijg ik email-, website-controles prima voor elkaar. [/quote:5b1ad04727]O hoe doen ze hetdaar dan? Ik heb lang zitten klooien hiermee en er werd altijd wel een adres niet ge-accepteerd terwijl die wel bestond. Tot dat ik op PHPreakz een script tegen kwam die het adres ontleed en ook het domein checked. Erg cool.
Link naar reactie
[quote:22084d5aab="sander16v"]bij php.net kan ik er niets over vinden?!?[/quote:22084d5aab] Het onderscheidt staat er toch echt in... ereg vs. preg POSIX Extended vs. Perl-Compatible Er staat zelfs een tip in de manual: [i:22084d5aab]PHP also supports regular expressions using a Perl-compatible syntax using the PCRE functions. Those functions support non-greedy matching, assertions, conditional subpatterns, and a number of other features not supported by the POSIX-extended regular expression syntax.[/i:22084d5aab] Het is niet de taak van de PHP-manual om Regular expressions uit te legen. Regular expressions is een aparte 'programmeertaal' om strings te doorzoeken, die in verschillende vormen ('dialecten') bestaat. De Regular expressions van Perl is één van de bekenste en wordt o.a. door PHP (middels de preg-functies) en .NET ondersteunt. Zie dan ook mijn link om de 'programmeertaal' te leren (de Perl-manier). Bij de preg-functies (in PHP) is het nodig dat het begint met een / en eindigt met een /. Waarom? Dat weet ik niet, maar waarschijnlijk heeft de PCRE-library (die gebruikt wordt door de preg-functies) dit nodig om het te kunnen verwerken. -Rémy
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...