Hi,
lese mit fopen eine Datei aus, die pro Zeile mehrer hundert Zeichen hat.
Nun habe ich eine Liste, die mir sagt wo verschiedene Datensätze beginnen und enden:
Bsp: Artikelnr (von Zeichen 10 bis 20), Usernummer (von Zeichen 25 bis 30), usw, usw.
Ich habe mir überlegt, ein Array anzulegen, in das ich gespeichert habe an welchen Stellen er umbrechen soll.
So lese ich jede Zeile Zeichenweise ein (was aber suuuper lange dauert, weil die Datei ca. 30000 Zeilen hat mit mehren hundert zeichen pro Zeile).
Mein Code ist sehr ineffizient und daher dachte ich mir, dass ich die Datei Zeilenweise einlese. Mein Problem ist, wie kann ich den String dann teilen, oder gibt es eine bessere Lösung?
Gruss
unknown
lese mit fopen eine Datei aus, die pro Zeile mehrer hundert Zeichen hat.
Nun habe ich eine Liste, die mir sagt wo verschiedene Datensätze beginnen und enden:
Bsp: Artikelnr (von Zeichen 10 bis 20), Usernummer (von Zeichen 25 bis 30), usw, usw.
Ich habe mir überlegt, ein Array anzulegen, in das ich gespeichert habe an welchen Stellen er umbrechen soll.
So lese ich jede Zeile Zeichenweise ein (was aber suuuper lange dauert, weil die Datei ca. 30000 Zeilen hat mit mehren hundert zeichen pro Zeile).
Code:
$daten = array('8', '20', '48', '58', '67', '93','107','119','129','141','146','158','161','170','173','182','194','197','207');
$ende = 18;
for ($counter = 0; !feof($handle); $counter++){
$buffer = fgetc($handle);
if ($array_counter == $ende){ //Wenn das Array im letzten Element ist
$array_counter = 0; $counter = 0; //Fange von vorne an
}else if ($counter >= $daten[$array_counter] && $counter < $daten[$array_counter]) echo $buffer;
else if ($daten[$array_counter] == $counter){ // Wenn Counter gleich der
$array_counter++; echo ("\n"); //Stelle ist erhöhe array_counter
}
}
fclose ($handle);
Gruss
unknown


Kommentar