[PHP] checkt adresveld niet goed

Pagina: 1
Acties:
  • 114 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
Ik heb een script dat bij het invullen van een formulier kijkt of alles klopt. Zo ook voor het adresveld, maar dat is als volgt:

Anjerhof 63 werkt wel
Laan van bolnes 63 werkt niet.

Dat houdt in dat het script die spaties niet toestaat, en hoe ik het ook doe, ik krijg het niet goed werkend..

dit is het stukje code waar het om gaat:

PHP:
1
2
3
    if(empty($_POST['adres']) || !ereg("^([A-Za-z]+)([[:space:]])*([0-9]{1,3})$",$_POST['adres'])){
        $error['adres'] = 1;
    }

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 19:50

Gonadan

Admin Beeld & Geluid, Harde Waren
'Laan van bolnes' heeft geen getal erachter. Dat is volgens je regex wel vereist.

En je staat maar één blok text toe.
Bedoel je niet iets als:
code:
1
([A-Za-z]+[[:space:]]*)+

[ Voor 38% gewijzigd door Gonadan op 27-10-2007 14:42 ]

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
Gonadan schreef op zaterdag 27 oktober 2007 @ 14:40:
'Laan van bolnes' heeft geen getal erachter. Dat is volgens je regex wel vereist.
foutje in de startpost.. ook met nummer werkt dit niet.. het ligt aan de spaties aan de naam..

Acties:
  • 0 Henk 'm!

Verwijderd

Dat klopt. In [A-Za-z] zit geen spatie.

Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
Verwijderd schreef op zaterdag 27 oktober 2007 @ 14:42:
Dat klopt. In [A-Za-z] zit geen spatie.
hoe moet ik dat doen? :space: ertussen zetten? of gewoon een spatie?

Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Nu online

orf

Een adres is bijna niet met een regex te valideren.
Wat doe je met

plein 1940-1945 8b
1e reedwarsstraat 8
Julianakade a/b Drie Gezusters

Allemaal geldige adressen. Je kunt wellicht beter alleen htmlspecialchars doen.

Acties:
  • 0 Henk 'm!

  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 19:50

Gonadan

Admin Beeld & Geluid, Harde Waren
Gamepie56 schreef op zaterdag 27 oktober 2007 @ 14:41:
foutje in de startpost.. ook met nummer werkt dit niet.. het ligt aan de spaties aan de naam..
Ik was nog aan het editten. ;)

Het gaat om het aantal 'word' blocks dat je toestaat.
Ik gebruik zelf altijd preg en dan is het meer zoals dit:
code:
1
/^(\w+\s)+\d{1,3}


Maar de vraag is ook of je zoveel wilt beperken als in max drie cijfers voor het nummer.
Vergeet niet dat er ook nummers bestaan als 254-266 of 3a. :)

Look for the signal in your life, not the noise.

Canon R6 | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
hmm.. misschien is het inderdaad handiger om gewoon geen check erop te doen zoals ik het hierboven lees :P..

ik heb hem nu zo, dat werkt:

PHP:
1
2
3
if($_POST['adres'] == ''){
$error['adres'] = 1;
}


Maar ik wil natuurlijk wel weten hoe het wel zou moeten werken, ook al gebruik ik het niet, van fouten leer je ^^
ik heb nu dit:

PHP:
1
2
3
    if(empty($_POST['adres']) || !ereg("^([0-9 A-Z a-z]+)([[:space:]])*([0-9A-Za-z]{1,3})$",$_POST['adres'])){
        $error['adres'] = 1;
    }

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 17:19
Gamepie56 schreef op zaterdag 27 oktober 2007 @ 14:55:
hmm.. misschien is het inderdaad handiger om gewoon geen check erop te doen zoals ik het hierboven lees :P..

ik heb hem nu zo, dat werkt:

PHP:
1
2
3
if($_POST['adres'] == ''){
$error['adres'] = 1;
}


Maar ik wil natuurlijk wel weten hoe het wel zou moeten werken, ook al gebruik ik het niet, van fouten leer je ^^
ik heb nu dit:

PHP:
1
2
3
    if(empty($_POST['adres']) || !ereg("^([0-9 A-Z a-z]+)([[:space:]])*([0-9A-Za-z]{1,3})$",$_POST['adres'])){
        $error['adres'] = 1;
    }
De spatie zal ook binnen de toegestane tekens van de straatnaam moeten horen:
van dit:
code:
1
^([0-9 A-Z a-z]+)
naar dit:
code:
1
^([0-9 A-Z a-z:space:]+)
Maargoed, dan zijn er nog steeds adressen met allerlei andere leestekens (in Hoogeveen heb je de "Mr. Cramerweg") en noem maar op. Adressen kunnen veel mogelijke tekens bevatten. Maar waarom wil je eigenlijk een adres valideren, ik begin namelijk een vermoeden te krijgen O-).

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
TNT heeft een lijst van alle straten met een nr erin, zie:
http://www.tntpost.nl/zak...ds/kIX_code/download.aspx

En dan onderaan: De RiskKIX tabel

Verder kan je natuurlijk obv Postcode de straat achterhalen, moet je alleen een postcode-tabel aanschaffen.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 09:34
Google Geocoding niet wat voor jou?

Gooi je gewoon een adres in zoals je wilt, haalt het resultaat op (als cvs, JSON of XML) en haalt daar de -door google- genormaliseerde gegevens uit.

Als het alleen maar om parsing gaat voor een SQL database kun je trouwens beter de diverse standaard escape functies gebruiken, die zijn daarvoor gemaakt ;)

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
Jaap-Jan schreef op zaterdag 27 oktober 2007 @ 15:02:
[...]

De spatie zal ook binnen de toegestane tekens van de straatnaam moeten horen:
van dit:
code:
1
^([0-9 A-Z a-z]+)
naar dit:
code:
1
^([0-9 A-Z a-z:space:]+)
Maargoed, dan zijn er nog steeds adressen met allerlei andere leestekens (in Hoogeveen heb je de "Mr. Cramerweg") en noem maar op. Adressen kunnen veel mogelijke tekens bevatten. Maar waarom wil je eigenlijk een adres valideren, ik begin namelijk een vermoeden te krijgen O-).
Wat van vermoeden krijg je ;)?

Het is een webshop, adres moet goed zijn, anders kan ik niet versturen.. Maar ik heb beetje te moeilijk gedacht, hij geeft nu alleen een fout als je niks invult.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gamepie56 schreef op zaterdag 27 oktober 2007 @ 22:53:
Het is een webshop, adres moet goed zijn, anders kan ik niet versturen.. Maar ik heb beetje te moeilijk gedacht, hij geeft nu alleen een fout als je niks invult.
En als je een spatie/streepje/whatever invult is het goed O-)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je nog de kans om de straat en het huisnummer te scheiden?
Dan is dat aan te raden.
Je hebt straat, huisnummer, huisnummertoevoeging en zelfs, al komt dat weinig voor, huisnummeraanduiding ("tegenover" en "bij", misschien nog meer, maar die weet ik niet)
("tegenover de kerk" bijvoorbeeld :X ). Op basis van de Kixcode kun je dan het adres opzoeken
en eventueel aan de gebruiker vragen of het adres klopt oid.

[ Voor 3% gewijzigd door Verwijderd op 28-10-2007 10:08 ]


Acties:
  • 0 Henk 'm!

  • Boyd
  • Registratie: Januari 2006
  • Laatst online: 07:27
RobIII schreef op zondag 28 oktober 2007 @ 01:01:
[...]

En als je een spatie/streepje/whatever invult is het goed O-)
jup.. kwestie van de bestelling meteen uit het systeem gooien dan ;)
Pagina: 1