Der Zeilenumbruch ist schon da - er ist nur je nach Format entweder CR, CRLF oder LF. In Notepad++ kannst du unter "Ansicht" die "Nicht druckbare[n] Zeichen" anzeigen - in deinem Fall solltest du "Zeilenende".
Wie kann ich nun den fgetcsv dazu bringen den Inhalt wie in Notepad sichbar korrekt zu trennen. Das ";" taugt ja nur als Feld-Trennzeichen, oder?
; ist in deinem Fall der Feld-Trenner, der Zeilentrenner ist vermutlich ein LF-Zeichen, welches von Windows Notepad nicht interpretiert wird, darum klebt es dort zusammen und du hast nur eine ewig lange Zeile.
Mein Versuch mit:
$row = 0;
$handle = fopen ("import-test.csv","r");
while ($data = fgetcsv ($handle, 99999, ';')) {
var_dump($data);
}
fclose ($handle);
>
> Brachte leider nichts gutes dabei heraus:
Mal kurz überarbeitet:
das 2. Argument mit einer unsinnig Großen Zahl zu füllen kannst du dir sparen, 0 bedeutet ab PHP 5.0.4 "unbegrenzt"
In der Schleife schreibst du dann jede Zeile (fopen R geht Zeilenweise durch) in ein Array welches du am Schluss ausgibst. Damit solltest du das Komplette CSV-File als mehrdimensionales Array vorliegen haben.
~~~php
if (($handle = fopen('import-test.csv', 'r')) !== false) {
while (($row = fgetcsv($handle, 0, ';') !== false) {
$data[] = $row;
}
fclose($handle);
print_r($data);
}