Xava: auslesen einer txt

Beitrag lesen

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