Datei auslesen

MariusK

Grünschnabel
Ich möchte eine Datei news.dat auslesen und als headlines.txt wiedergeben. Wie sieht das komplette Skript dafür aus? Inhalt der Datei ist so aufgebaut:
m4r1us|--|Neuer Member|--|Newsinhalt|--|07.08.2003|--|08:04|--||--||--|mk@hotmail.com|--|1|--|0|--||--||--|
m4r1us|--|NewsTitel|--|NewsInhalt|--|07.08.2003|--|09:36|--||--||--|mk@hotmail.com|--|0|--|0|--||--||--|
m4r1us|--|NewsTitel|--|Newsinhalt111!!!|--|07.08.2003|--|09:37|--||--||--|mk@hotmail.com|--|7|--|0|--||--||--|

Ich möchte einfach nur den Titel auslesen und am Schluss immer die 3 neusten, also die letzten 3 Einträge in der Datei von unten, in einer *.txt gespeichert haben. Damit man sie includen kann.
 
Hallo, ich hoffe der Code ist ausreichend kommentiert. Ich gehe davon aus, dass die neusten News immer unten stehen. Beim Schreiben in die Zieldatei steht der neuste Datensatz immer oben.

PHP:
<?php
  // Einstellungen
  $anzShow = 3;                 // Anzahl der anzuzeigenden News
  $fileSrc = 'news.dat';        // Quelldatei
  $fileDes = 'headlines.txt';   // Zeildatei

  // Quelldatei in Array einlesen (eine Zeile entspricht einem Array-index)
  $arNews = @file($fileSrc);
  
  // Zieldatei öffnen & leeren
  $fp = fopen($fileDes, "wb+");
  
  // Wenn Zeilen in Quelldatei vorhanden sind
  // und öffnen der Zieldatei erfolgreich war
  if ((count($arNews) > 0)&&($fp)) {
    // Beginnend bei der letzten Zeile die eingestellte Anzahl der News durchlaufen
    for ($x = (count($arNews)-1); $x >= 0, (count($arNews)-$x) <= $anzShow; $x--) {
      // Zeile anhand des Delimiters in Array splitten
      $arLine = @explode('|--|', $arNews[$x]);
      if (count($arLine) > 1) {
        // 2. Array-Index entspricht News-Titel -> Schreiben in Zieldatei
        fwrite($fp, $arLine[1]."\n");
      }
    }

  }
  
  // Zieldatei schließen
  fclose($fp);
?>

snuu
 
Dann solltest Du versuchen zu verstehen was mein Script macht. Genug Kommentare sind ja vorhanden. Um die Newstitel mit BRs zu trennen, ersetze die Zeile:
PHP:
fwrite($fp, $arLine[1]."\n");
durch
PHP:
fwrite($fp, $arLine[1]."<br>");

snuu
 
natürlich, ich versuch sowieso immer alles zu verstehen und nicht einfach nur damit um zu gehen. Sonst bringt der ganze Aufwand ja nichts.
 
Zurück