Hallo azok!
Du möchtest nun die Datei wieder auslesen? Der Inhalt einer Datei sieht ungefähr so aus?
Datei: news.txt
---8<---------------------------------------------------------------------------
feld1a~feld2a~feld3a~feld4a
feld1b~feld2b~feld3b~feld4b
...
---8<---------------------------------------------------------------------------
In deinem Quellcode steht:
$element = implode("~",$entry);
Die Funktion "implode()" macht aus einem Array einen einzigen String, wobei die einzelnen Einträge im Array aneinandergehanden werden und jeweils dazwischen wird ein das Zeichen des ersten Parameters eingefügt -- in diesem Fall "~".
Daraus würde dann folgender String (echo $element):
feld1a~feld2a~feld3a~feld4a~feld1b~feld2b~feld3b~feld4b
Folgende Zeile bewirkt:
$element = explode("~",$element);
Dass in $element ein Array angelegt wird und der obige String anhand des Seperators "~" getrennt wird.
Daraus würde dann folgender Array:
$element = Array => [0] => "feld1a"
[1] => "feld2a"
[2] => "feld3a"
[3] => "feld4a"
[4] => "feld1b"
[5] => "feld2b"
[6] => "feld3b"
[7] => "feld4b"
Der Lösungansatz für dein Problem:
1. Datei zeilenweise auslesen.
2. Jede Zeile anhand des Seperators "~" in die einzelnen Felder splitten
3. Gewünschte Felder ausgeben
Folgend drei Implementierungsvorschläge (ohne Gewähr auf Richtigkeit und Fehlerfreiheit *g*):
Vorschlag A:
---8<---------------------------------------------------------------------------
$fp = @fopen("news.txt", "r") or die ("Kann Datei nicht lesen."); // Datei(-pointer) öffnen
$i = 1; // Zeilenzähler
while ($zeile = fgets($fp, 1024)) { // Zeilenweises auslesen
$element = explode("~", $zeile); // Zeile in Felder splitten
echo "Zeile: ".$i++." ";
foreach($element as $k => $v) // Alle Felder ausgeben
{ echo "Feld ".$k.": ".$v."; "; } // Ausgabe Feld-Nr. und Inhalt
echo "\n";
}
fclose($fp); // Datei(-pointer) schliessen
---8<---------------------------------------------------------------------------
Vorschlag B:
---8<---------------------------------------------------------------------------
$fileArray = file("news.txt"); // Datei auslesen und zeilenweise in ein Array legen
$i = 1; // Zeilenzähler
foreach($fileArray as $zeile) { // Schleife: Zeile für Zeile
$element = explode("~", $zeile);
echo "Zeile: ".$i++." ";
foreach($element as $k => $v) // Alle Felder ausgeben
{ echo "Feld ".$k.": ".$v."; "; } // Ausgabe Feld-Nr. und Inhalt
echo "\n";
}
---8<---------------------------------------------------------------------------
Vorschlag C:
---8<---------------------------------------------------------------------------
$fp = fopen ("news.txt", "r"); // Datei(-pointer) öffnen
$i = 1; // Zeilenzähler
// Datei Zeilenweise auslesen. Felder aus der Zeile splitten und als Array zurückgeben
while (($element = fgetcsv ($fp, 1024, "~")) !== FALSE ) {
echo "Zeile: ".$i++;
foreach($element as $k => $v) // Alle Felder ausgeben
{ echo "Feld ".$k.": ".$v."; "; } // Ausgabe Feld-Nr. und Inhalt
echo "\n";
}
fclose ($fp); // Datei(-pointer) schliessen
---8<---------------------------------------------------------------------------
Ausgabe:
---8<---------------------------------------------------------------------------
Zeile 1: Feld 0: feld1a; Feld 2: feld2a; Feld 3: feld3a; Feld 4: feld4a;
Zeile 2: Feld 0: feld1b; Feld 2: feld2b; Feld 3: feld3b; Feld 4: feld4b;
---8<---------------------------------------------------------------------------
Ich hoffe, dass hilft dir weiter.
Mehr Informationen:
- dclp-FAQ: 13.1. Wie kann ich eine Datei auslesen?
http://www.dclp-faq.de/q/q-datei-lesen.html
- PHP-Handbuch: implode()
http://de3.php.net/manual/de/function.implode.php
- PHP-Handbuch: explode
http://de3.php.net/manual/de/function.explode.php
- PHP-Handbuch: fgetcsv()
http://de3.php.net/manual/de/function.fgetcsv.php
- PHP-Handbuch: file()
http://de3.php.net/manual/de/function.file.php
- PHP-Handbuch: fopen()
http://de3.php.net/manual/de/function.fopen.php
- PHP-Handbuch: fclose()
http://de3.php.net/manual/de/function.fclose.php