adres strippen na int
Ik moet van een mysql tabel een script maken zodat de data in een ander formaat in een nieuwe tabel ingevoerd kan worden.
De oude tabel heeft een veld adres (straat + huisnummer), de nieuwe tabel heeft dit gesplitst).
Hoe kan ik het beste van:
Quote:
Adres = Stationstraat 15B
Quote:
Straat = Stationstraat
Huisnummer = 15B
Huisnummer = 15B
Het probleem is alleen dat er natuurlijk ook straten zijn met meerdere namen, huisnummers met of zonder letters...
Mijn idee was om alles als huisnummer te pakken na het eerste cijfer (denk niet dat er straatnamen zijn met cijfers in).
Hoe kan ik dit het beste doen?
Alvast bedankt!
Misschien kan het eenvoudiger???
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$straatnaam = "Stationstraat 15B";
$asplit = str_split($straatnaam);
$numeric = false;
$straat = "";
$nummer = "";
for($x = 0; $x < count($asplit); $x++){
//Kijk wanneer de eerste waarde een getal is
if(is_numeric($asplit[$x])){
$numeric = true;
}
//Is het een getal of niet
if($numeric == false){
$straat = $straat . $asplit[$x];
}
else{
$nummer = $nummer . $asplit[$x];
}
// $straat is de straat naam
// $nummer is het huisnummer
}
?>
$straatnaam = "Stationstraat 15B";
$asplit = str_split($straatnaam);
$numeric = false;
$straat = "";
$nummer = "";
for($x = 0; $x < count($asplit); $x++){
//Kijk wanneer de eerste waarde een getal is
if(is_numeric($asplit[$x])){
$numeric = true;
}
//Is het een getal of niet
if($numeric == false){
$straat = $straat . $asplit[$x];
}
else{
$nummer = $nummer . $asplit[$x];
}
// $straat is de straat naam
// $nummer is het huisnummer
}
?>
Zelf had ik dit al gevonden, alleen pakt hij dan de cijfers als huisnummer en laat hij de letters erachter weg:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?PHP
$string = "Stationstraat 15B";
preg_match_all('/^([^\d]+)(\d+)/', $string, $match);
$text = $match[1][0];
$num = $match[2][0];
?>
$string = "Stationstraat 15B";
preg_match_all('/^([^\d]+)(\d+)/', $string, $match);
$text = $match[1][0];
$num = $match[2][0];
?>
Eindhoven heeft een 18 septemberplein en Amsterdam een Plein '40-'45...
Hmm, dat gaat dan ook niet werken, iemand een idee hoe ik dit kan oplossen? Eventueel kan ik controleren of er met een int begonnen wordt, plein 40-45 wordt lastiger
Maar eigenlijk kies je of voor het invoeren van een adres waarbij je de gebruiker vrij laat om zijn haar adres te noteren zoals je dat wilt. Meestal hou je daar twee inputs voor beschikbaar. Paypal doet dit bijvoorbeeld.
In het andere geval spreek je helemaal niet over adres maar doe je alles apart: naam, straatnaam, huisnr, postcode, stad, land...
Je kunt overwegen het semi-automatisch te doen: zet alleen alle string + spatie + nummer automatisch over en doe de rest handmatig.
15B mag gewoon in 1 veld. Hier wordt - behalve bestellingen naartoe verzonden - verder niets mee gedaan.
Ik kan het semi-automatisch maken. Hoop alleen dat van de 85000+ adressen niet nog een hele hoop overblijven die handmatig gedaan moeten worden dan.
Aannames zijn dodelijk. In Lelystad zijn er hele wijken met genummerde straten (zoals Kamp 11 t/m Kamp 43, waardoor je huisnummers krijgt als Kamp 15-78). Ook in Wijchen, Zevenaar en Nijmegen komt dit voor.
Ik vrees dat er niet echt een eenvoudige manier is om het oude adresveld te splitsen.
Als je de postcode hebt, zou je kunnen opzoeken welke straatnaam daarbij hoort en op basis daarvan kunnen bepalen wat het huisnummer is. Maar owee als er dan tikfouten of alternatieve schrijfwijzen in je invoer zitten... ;-)
Hmm ok, dan toch nog moeilijker dan ik in eerste instantie hoopte. Ik ga eens wat proberen
Shamrock Modelbouw op 30/08/2014 16:34:25:
Hmm ok, dan toch nog moeilijker dan ik in eerste instantie hoopte. Ik ga eens wat proberen
Of je maakt het te moeilijk.
Werkt natuurlijk alleen als bij een toevoegsel geen spatie is gebruikt, zoals 15 B ipv 15B
Tobias Tobias op 30/08/2014 17:19:56:
Werkt natuurlijk alleen als bij een toevoegsel geen spatie is gebruikt, zoals 15 B ipv 15B
En daar gaat het fout. Ik vraag me weleens af waarom die dwang aanwezig is om alles dat een gebruiker intypt maar te kunnen verifiëren en controleren? Als het om adressen gaat dan is er zo een grote legio aan mogelijkheden dat ik zeg: vertrouw op de bereidwilligheid van een serieuze gebruiker dat hij/zij zijn/haar adres zo goed en volledig mogelijk invoert. Waarom moet je de huisnummers apart hebben? als het PUUR voor de Nederlandse markt is en je wilt een huisnummer en postcode validatie dan kan ik me er nog iets bij voorstellen maar je gaat al nat als iemand in België woont. Denk eens aan campings met staanplaatsen of Huizen die als kamerverhuur ingericht zijn. Je kunt het niet bedenken of het bestaat. Laat het met rust. Laat de gebruiker vooral zijn of haar adres invullen zoals hij of zij denkt dat het goed is!
Quote:
En daar gaat het fout. Ik vraag me weleens af waarom die dwang aanwezig is om alles dat een gebruiker intypt maar te kunnen verifiëren en controleren?
Heb je weleens te maken gehad met het aanmaken van verzendingen via een API van een vervoerder?
Waarschijnlijk niet anders had je dit jezelf niet afgevraagd.
Ger van Steenderen op 30/08/2014 20:40:57:
Heb je weleens te maken gehad met het aanmaken van verzendingen via een API van een vervoerder?
Waarschijnlijk niet anders had je dit jezelf niet afgevraagd.
Quote:
En daar gaat het fout. Ik vraag me weleens af waarom die dwang aanwezig is om alles dat een gebruiker intypt maar te kunnen verifiëren en controleren?
Heb je weleens te maken gehad met het aanmaken van verzendingen via een API van een vervoerder?
Waarschijnlijk niet anders had je dit jezelf niet afgevraagd.
Ja Ger, in welk deel van de wereld of welk land? en dan nog, gewoon gescheiden laten invoeren door de gebruiker dus..
Maar dat is niet gebeurd, en daar gaat de vraag over .....
Iemand toch nog een idee hoe ik dit goed kan omzetten? Of toch maar met een minder secure manier oplossen en hopen op weinig fouten?
Bedankt!
Je kunt altijd de postcode.nl API gebruiken. Hiervoor heb je wel een KVK nummer en dergelijke nodig. Je kunt hiermee via een cURL of jQuery een request doen naar hun server en de postcode en huisnummer+toevoeging controleren.
Maar ik denk dat ik het wel omgezet krijg, bedankt voor alle hulp!