suit: CSV-Import mit fgetcsv

Beitrag lesen

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);  
}