adres strippen na int
Hallo,
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:
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!
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!
Ik ben nog maar een beginner maar dit werkt wel.
Misschien kan het eenvoudiger???
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
}
?>
Bedankt, dit is inderdaad een manier, waarom ik dit zelf niet bedacht heb is omdat ik elk adres per character moet strippen. Opgeteld moet ik ongeveer 85000 adressen controleren. Ik denk dat het dan redelijk lang gaat duren.
Zelf had ik dit al gevonden, alleen pakt hij dan de cijfers als huisnummer en laat hij de letters erachter weg:
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
Gewoon het huisnummer apart laten ingeven in een form. eventueel als het huisnummer overeenkomt met de laatste letters van het adres dan nog aanpassen (bij dubbele invoer dus).
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...
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...
Moet "huisnummer" 15B niet nog worden gesplitst in huisnummer 15 en huisnummertoevoeging B? Zo doet PostNL dat bijvoorbeeld.
Je kunt overwegen het semi-automatisch te doen: zet alleen alle string + spatie + nummer automatisch over en doe de rest handmatig.
Je kunt overwegen het semi-automatisch te doen: zet alleen alle string + spatie + nummer automatisch over en doe de rest handmatig.
Het probleem is dat ik met 2 systemen moet werken, 1 (mijn gemaakte site) maakt gebruik van aparte velden (straat & huisnummer), het computer systeem werkt met 1 veld (adres). De adressen die in de computer staan (85000+) moeten al omgezet worden naar de site database. Daarnaast wordt het computer systeem (niet door mij gemaakt) nog niet aangepast dus alle acties vanuit de computer naar de database moeten via mijn script gaan.
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.
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.
> denk niet dat er straatnamen zijn met cijfers in
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... ;-)
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.
Het enige wat ik kan bedenken is de string in stukken knippen op spaties. Het laatste stuk is dan het huisnummer, en alle stukken ervoor (of 1 stuk) kun je aan elkaar plakken tot straatnaam.
Werkt natuurlijk alleen als bij een toevoegsel geen spatie is gebruikt, zoals 15 B ipv 15B
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 .....
idd, de site gebruikt aparte velden, de oude database (die overgezet moet worden naar de site) niet. Ik kan hier verder niets aan veranderen...
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!
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.
Het gaat om adressen uit verschillende landen (NL, BE, FR, EN, DE etc...)
Maar ik denk dat ik het wel omgezet krijg, bedankt voor alle hulp!
Maar ik denk dat ik het wel omgezet krijg, bedankt voor alle hulp!




