Datei zeilenweise in Array einlesen!

abi22

Grünschnabel
Hallo!

Wer kann mir bitte helfen?

Eine .txt Datei mit beispielsweise folgendem Inhalt:

Abbe---->Günther---->Strasse---->Ort---->Land
Becker---->Boris----->Strasse---->Ort---->Land---->Telefon
Cullmann---->Carsten---->Strasse---->Ort---->Land----->Telefon---->Homepage----->Fax

Diese Datei möchte ich nun mit PHP zeilenweise einlesen.
Zudem möchte ich auch noch die Reihenfolge der Daten ändern. Z.B.:

Strasse---->Ort---->Land---->Günther---->Abbe etc.

Bei meinen Versuchen ergaben sich folgende Probleme:
Es wurde zeilenweise eingelesen, jedoch nur bis zu einem bestimmten Zeichen
und unvollständig. Die Ausgabe ist z.B. so:
Abbe---->Günther---->Strasse---->Ort---->Land
ris----->Strasse--->Ort---->Land---->Telefon---->Cullmann
Carsten---->Strasse..... Also ein durcheinander.


So sieht mein Programm aus:


<?php
$fp = fopen('export-auftrag.txt', 'r');
while (!feof($fp))
{
$zeile = fgets($fp,100);
$daten = explode("\t", $zeile);
echo "$daten[0]\t$daten[1]\t$daten[2]\t$daten[3]\t$daten[4]\t$daten[5]\t
$daten[6]\t$daten[7]\t$daten[8]<br>;
}
fclose($fp);
?>

Wie kann man das bitte realisieren
Vielen Dank für Eure Hilfe!
 
Zuletzt bearbeitet:
mein Vorschlag ... benutze in Zukunft vernünftige CVS Trenner und achte auf konsistente Daten.
Das heißt :

Name,Vorname,Strasse,Ort
Name,,Strasse,Ort
Name,Vorname,,

Wenn du eine neue Zeile beginnst, diese aber weniger Inhalt hat müssen dennoch die
Trennzeichen vorhanden sein.

Zu deinem Problem :
Ich würde die Datei über [phpf]file[/phpf] einlesen, exploden, dann sortieren.

Gruß,
Nils
 
Hi,

nur auf den ersten Blick, aber ich vermute mal:

fgets($fp,100); <-- damit begrenzt Du die Zeilenlänge beim Einlesen auf 100 Bytes. Wenn Deine Zeile mehr Bytes enthält, wird sie notwendigerweise zerrissen.

Gruß

EDIT: hmm, wieder mal einen Tick zu spät. ;) Ansonsten: Wie Nils sagte - mit file() geht es sicher eleganter.
 
Das Problem ist nur, dass diese "Trenner" beim Export der Daten schon so eingefügt werden!
Also muss ich auch damit arbeiten. Und da diese Daten auch in eine Datenbank eingefügt werden sollen, und diese tabdelimitted arbeitet muss diese Form beibehalten werden.
 
Hab ne Frage könnte einer von euch mir mal eine Bsp.-Programm zeigen wie man das nach euren Vorstellungen lösen könnte.
 
PHP:
$datei=file("pafadzurdatei");
{
unset($inhalt,$eintrage);
for ($i=0;$i<count($datei)+1;$i++){ // Wir lesen die gesammte Datei in die Variable $inhalt
$inhalt .="$datei[$i]";
}
// Wir erzeugen einen array
$eintrage=explode('---->',$inhalt);
// so jetzt hast du die Einträge in einem array $eintrage[0] ist erster Eintrag
// $eintrage[1] der zweite usw.
}
// Du kannst auch alle ausgeben
// mittels count() kannst du zählen wieviel einträge eine Datei hat
for ($i=0;$i<count($eintrage);$i++){ //$i ist null so lange bis die anzahl im array erreicht ist
// im schrittakt +1 (++) bedeutet eine Variable wird um eins erhöht
echo "$eintrage[$i]<br>"; // da jetzt $i mal 0,1,2,3 bekommst du alle Einträge raus

}


PS
wegen Datei zeilenweise in Array einlesen!
PHP:
$datei=file("pafadzurdatei");
$datei ist jetzt dann schon ein array mit den Zeilen!
 
Zuletzt bearbeitet von einem Moderator:
Zurück