CSV-Dateien: Verschiedene zeilen einlesen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
code
datei
datenmenge
einlesen
fehler
feld
file
gesamte datei
lese
machen
methode
paar
position
springen
strang
test
wissen
zeile
zweite zeile
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$file = file(_Pfad_);
Dies lädt die Datei in ein Array und mann kan via $file['1'] auf Zeile 2 zugreifen (Das Array geht bei 0 los, somit ist Zeile 1 im Array 0). -
Das ist so nicht möglich! PHP weiß ja nicht wo die zweite Zeile beginnt, demzufolge muß PHP immer erst die 1. Zeile einlesen
Es sei denn deine 1. Zeile hat IMMER eine feste Größe, dann könnte man mittels fseek() an die Position springen und nur die zweite Zeile einlesen.
Aber wenn du magst kannst du ja nur bis zu der gewünschten Zeile lesen. Das geht dann so:
<?php $row = 2; // Anzahl der Zeilen $handle = fopen ("test.csv","r"); // Datei zum Lesen öffnen $filesize = filesize("test.csv"); // jede Zeile einlesen for( $i=0; $i<$row; $i++ ) { // pruefen ob Zeile = gesuchte und Fehler auftrat if ((($data = fgetcsv ($handle, $filesize, ",")) !== FALSE) && ($row == $i+1)) { $num = count ($data); // Felder im Array $data for ($c=0; $c < $num; $c++) { // FOR-Schleife, um Felder print $data[$c] . "<br>\n"; // des Arrays auszugeben } } } fclose ($handle); ?>
Edit: @strange: ich glaube er möchte nicht die gesamte Datei einlesen nur um die zweite Zeile zu haben, ansonsten ok
Grüßle
Beitrag zuletzt geändert: 4.5.2009 21:17:47 von scout -
Mit Deiner Methode wird auch immer die ganze Datei eingelesen, somit ist egal wie man es macht. So lange es sich nur um ein paar KiB handelt ist es auch egal, erst wenn die Datenmenge zu groß wird braucht man eine andere Methode.
-
strange schrieb: Mit Deiner Methode wird auch immer die ganze Datei eingelesen, somit ist egal wie man es macht. So lange es sich nur um ein paar KiB handelt ist es auch egal, erst wenn die Datenmenge zu groß wird braucht man eine andere Methode.
Dem dürfte nicht so sein, denn fgetcsv() liest zeilenweise
Grüßle
PS: allerdings war meine Bedingung nicht ganz korrekt -> ($row == $i+1) muß ans Ende -> oben korrigiert -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage