Import csv file met quoted strings
Het is een csv, gescheiden door ;
Echter in een bepaalde kolom staat tussen dubbele aanhalingstekens 2 waardes die ook gescheiden zijn door ;
Voorbeeld:
"1";"Naam klant";"Plaats klant";"Emailadres1;Emailadres2"
Ik heb het geprobeerd met:
$lines = file(bestandsnaam);
foreach ($lines as $line_num => $line) {
$row_array=explode("";"",$line);
}
Echter zet hij nu het 1e mailadres in $row_array[3] en het 2e mailadres in $row_array[4]. Het zou zo moeten zijn dat beide mailadressen in $row_array[3] zouden moeten staan.
Hoe zou ik dat het beste op kunnen lossen?
Bij die e-mail adressen staan geen quotes.
Dus, eerst alles tussen de quotes uithalen, en als er in die quotes nog een ; staat ga je daar op exploden ;-)
Voorbeeld:
"1";"Naam klant";"Plaats klant";"Emailadres1;Emailadres2";1
Of heb ik dat mis?
Code (php)
als het goed is geeft dat dit:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$row_array = Array(
0 => "1",
1 => "Naam klant",
2 => "Plaats klant",
3 => "Emailadres1;Emailadres2"
)
0 => "1",
1 => "Naam klant",
2 => "Plaats klant",
3 => "Emailadres1;Emailadres2"
)
Dan blijft er nog een probleem over:
$row_array bevat alleen de gegevens van het laatste element van de array $lines, De laatste regel van het gestand dus. Misschien vind jij dat geen probleem, maar waarom zou je dan... laat maar, zo los je het mogelijke probleem op:
Code (php)
EDIT: ik had je laatste bericht niet goed gelezen, je moet wat ingewikkelders gaan doen. Ik ben er mee bezig. Het simpelste is om ervoor te zorgen dat je geen ";" gebruikt tussen de aanhalingstekens, of een ander scheidingsteken gebruikt. Als je dat niet wilt zijn er denk ik nog wel betere manieren, zoals de gegevens in een database zetten.
EDIT2: ik denk dat je het beste (als je bovenstaande dingen niet wilt doen) de numerieke waarden ook tussen aanhalingstekens kan zetten, PHP kan daar wel mee omgaan.
Gewijzigd op 01/01/1970 01:00:00 door Krop Kroppyer
Werkt geweldig.
Bedankt voor jullie reacties en hulp.