Adressen uitlezen (PHP)
Ik heb in Word een adressenlijst van meer dan 600 items die ik allemaal moet sorteren op straatnaam.
Het is ongebonnen werk om dit allemaal handmatig uit te zoeken en te sorteren.
Heeft iemand een idee hoe ik dit op een simpele manier kan doen?
De adresen staan allemaal door elkaar heen en gestorteerd op de naam. Dit moet dus gesorteerd worden op een straatnaam.
Misschien kan ik dit wel in een database zetten, dat lijkt me wel het handigst. Maar dan zit ik nog met het probleem dat ik meer dan 600 items in de database moet zetten (kolommen naam, adres, postcode, woonplaats). Alle woonplaatsen zijn overigens hetzelfde, dus dit hoeft niet per se.
Wie heeft een makkelijke en simpele oplossing voor mijn probleem? Ik zie het echt niet zitten om dit handmatig te moeten doen als ik er waarschijnlijk wel een PHP-scriptje voor kan schrijven.
Alvast bedankt!
Toevoeging op 13/03/2013 00:22:33:
Edit: Met dat PHP-scriptje bedoel ik bijvoorbeeld dat na elke lege regel (zit standaard tusen elke adres) een nieuw item wordt gezien.. Bijvoorbeeld:
Naam
Adres Huisnummer
Postcode
Woonplaats
[enter]
Naam
Adres Huisnummer
Postcode
Woonplaats
[enter]
...
Dat dat wordt gezien als:
1Naam
1Adres Huisnummer
1Postcode
1Woonplaats
[enter]
2Naam
2Adres Huisnummer
2Postcode
2Woonplaats
[enter]
Het maakt niet uit als adres + huisnummer in dezelfde kolom komen te staan. Hier wil ik het werk wel van hebben om dit uit te zoeken.
dan kun je die tabel wel exporteren naar een csv bestand ofwel Comma Separated Values via excel.
daarna kan een php progje ze wel inlezen.
Momenteel staat het niet in een tabel, maar ik geloof dat ik alles zo kan kopiëren en dat in een tabel kan plakken.
Ik ga het gelijk even proberen, bedankt Frank!
Als er wel structuur in de lijst zit, zou je eenvoudig met Word of Excel iets kunnen frutselen. In het ergste geval moet je even de adrescomponenten netjes onder elkaar uitlijnen, zodat je de lijst op basis van een aantal karakters per kolom kunt converteren naar een tabel. Of je zet er delimiters tussen; bij adressen zou een tab of een puntkomma een redelijk veilige keuze moeten zijn.
Alles staat momenteel zo onder elkaar:
Naam1
Straat1 huisnummer1
Postcode1 woonplaats1
Naam2
Straat2 huisnummer2
Postcode2 woonplaats2
Naam3
Straat3 huisnummer3
Postcode3 woonplaats3
...
Naam630
Straat630 huisnummer630
Postcode630 woonplaats630
In mijn ogen is dit echt onbegonnen werk!
Toevoeging op 13/03/2013 00:33:46:
Edit:
Wanneer ik alle lege regels tussen alle adressen weghaal, kan ik het converteren naar een tabel.
Zodra het in een tabel staat, is het toch niet zo moeilijk om het te converteren naar Excel en dit bestand uit te lezen in php?
Array
(
[0] => Naam1
[1] => Straat1 huisnummer1
[2] => Postcode1 woonplaats1
[3] =>
[4] => Naam2
[5] => Straat2 huisnummer2
[6] => Postcode2 woonplaats2
[7] =>
[8] => Naam3
[9] => Straat3 huisnummer3
[10] => Postcode3 woonplaats3
)
regel1 = naam
regel2 = straat + huisnr
regel3 = postcode + woonplaats
en na een lege regel ga je weer vanaf 1 tellen
Gewijzigd op 13/03/2013 00:36:59 door Frank Nietbelangrijk
Maar het gaat om 684 adressen haha maar dat valt toch wel op te lossen met een while loop en $i++ ?
Toevoeging op 13/03/2013 00:39:39:
Frank Nietbelangrijk op 13/03/2013 00:36:34:
je kunt ook wel met php regel voor regel inlezen waarbij
regel1 = naam
regel2 = straat + huisnr
regel3 = postcode + woonplaats
en na een lege regel ga je weer vanaf 1 tellen
regel1 = naam
regel2 = straat + huisnr
regel3 = postcode + woonplaats
en na een lege regel ga je weer vanaf 1 tellen
Dat zou inderdaad ook een uitkomt kunnen zijn.. En dan al die gegevens opslaan in een database bedoel je?
je schrijft gewoon een klein php bestandje dat jouw bestand inleest en je gaat daar een nieuw bestand aanmaken en dan bekijk je het resultaat
kijk eens naar http://php.net/manual/en/function.file.php
Toevoeging op 13/03/2013 00:43:42:
Ronald hendriks op 13/03/2013 00:38:29:
Dat zou inderdaad ook een uitkomt kunnen zijn.. En dan al die gegevens opslaan in een database bedoel je?
ligt er aan wat je er later mee wilt doen
Het is allemaal binnen de woonplaats van de klant, dus dit moet uiteindelijk uitgeprint worden.
Toevoeging op 13/03/2013 00:50:45:
Edit:
Alle witregels zijn nu uit het Word-document gehaald (^p^p vervangen door ^p) en ik kan het nu allemaal converteren naar een tabel.
Ik denk dat ik nu al een grote stap verder ben
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$array = file('adressen.txt');
$new = array(array(),array(),array(),array(),array());
$teller = 0;
$subteller = 0;
foreach($array as $line)
{
if(trim($line) == '')
{
$subteller = 0;
$teller++;
continue;
}
$explode = explode(' ',$line);
foreach($explode as $sub)
{
$new[$teller][$subteller] = trim($sub);
$subteller++;
}
}
echo '<pre>'.print_r($new, true).'</pre>';
?>
$array = file('adressen.txt');
$new = array(array(),array(),array(),array(),array());
$teller = 0;
$subteller = 0;
foreach($array as $line)
{
if(trim($line) == '')
{
$subteller = 0;
$teller++;
continue;
}
$explode = explode(' ',$line);
foreach($explode as $sub)
{
$new[$teller][$subteller] = trim($sub);
$subteller++;
}
}
echo '<pre>'.print_r($new, true).'</pre>';
?>
Geeft:
Array
(
[0] => Array
(
[0] => Naam1
[1] => Straat1
[2] => huisnummer1
[3] => Postcode1
[4] => woonplaats1
)
[1] => Array
(
[0] => Naam2
[1] => Straat2
[2] => huisnummer2
[3] => Postcode2
[4] => woonplaats2
)
[2] => Array
(
[0] => Naam3
[1] => Straat3
[2] => huisnummer3
[3] => Postcode3
[4] => woonplaats3
)
)
Met behulp van de vorige posts heb ik het echter zelf al gevonden.
Voor eventuele volgende lezers:
Allereerst moet je zorgen dat je alles onder elkaar hebt staan in Word. Wanneer je witregels tussen de adressen hebt staan, kun je deze met ctrl+h vervangen. Je moet ^p^p vervangen door ^p zodat de dubbele regels (waarvan 1 dus leeg is) wordt vervangen door een enkele regel en alles netjes onder elkaar komt te staan.
Vervolgens kun je alles selecteren en dit in Word converteren naar een tabel.
Wanneer je alles netjes naast en onder elkaar in een tabel hebt staan, kun je alles selecteren en dit plakken in excel.
Vervolgens sla je dit excel bestand op als .xls
Wanneer je alles goed hebt staan in Excel, kun je dit converteren naar MySQL op de volgende website: http://www.xls2mysql.com/
Reuze bedankt voor het meedenken iedereen! Zonder jullie hulp was ik dagen bezig geweest om alles handmatig uit te zoeken.
Mijn scriptje kan je zo gebruiken om alles in de database te gooien.
Maar goed dat het is opgelost.
Succes verder.
Misschien dat jouw manier inderdaad nog wel makkelijker is dan het hele stappenplan wat ik net heb gedaan.
Nogmaals bedankt voor het meedenken en weltrusten iedereen :)