SiWi: Einer Textdatei etwas am Anfang hinzufügen

Ich hab die PHPmanual durchsucht, aber nichts gefunden.
Wie fügt man bei einer Textdatei in PHP am Anfang etwas hinzu?
Also wie wenn man eine Datei mit fopen(irgentwas.txt, a) öffnet bloß, dass man etwas am Anfang hinzufügt.

  1. echo $begrüßung;

    Wie fügt man bei einer Textdatei in PHP am Anfang etwas hinzu?

    Diese Funktionalität gibt es nicht in PHP.
    Öffne eine neue Datei, schreibe den Anfang und hänge den Inhalt der anderen Datei an.

    echo "$verabschiedung $name";

    1. Für mich gäbe es noch eine andere Möglichkeit, um mein vorhaben zu realisieren. Nämlich zuerst die letzte Zeile auszulesen, dann die vorletzte usw.  Wie geht das?

      1. Hi,

        Für mich gäbe es noch eine andere Möglichkeit, um mein vorhaben zu realisieren. Nämlich zuerst die letzte Zeile auszulesen, dann die vorletzte usw.

        Der fopen-Parameter "a" erlaubt Dir das Anhängen von Text. Auslesen kannst Du einfach mit file(). Den zurückgegebenen Array sortierst Du dann rückwärts.
        http://de.php.net/manual/de/function.fopen.php
        http://de.php.net/manual/de/function.file.php
        http://de.php.net/manual/de/function.rsort.php

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Hallo Joachim,

          Der fopen-Parameter "a" erlaubt Dir das Anhängen von Text. Auslesen kannst Du einfach mit file(). Den zurückgegebenen Array sortierst Du dann rückwärts.
          http://de.php.net/manual/de/function.rsort.php

          wie wäre es statt dessen mit array_reverse()?

          Freundliche Grüße

          Vinzenz

          1. Hi Vinzenz,

            wie wäre es statt dessen mit array_reverse()?

            stimmt, rsort sortiert die values... jaja, Dokus sollte man nicht nur verlinken sondern auch lesen ;-)

            Gruesse, Joachim

            --
            Am Ende wird alles gut.
          2. Hello,

            wie wäre es statt dessen mit array_reverse()?

            Das wäre insbesondere bei großen Arrays schon deshalb intelligenter, da hier nur Anfangs- und Endanker der Kette vertauscht werden zu brauchen. "Next" wird dann zu "Previous" und um gekehrt, aber auch das ist für PHP nicht zu schwer ;-))

            Es kostet auf jeden Fall wesentlich weniger Rechenzeit.

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau

          3. Ich habe jetzt folgenden Code erstellt:
            <html>
            <title>Newsfeeder</title>
            <body>
            <?php
            $array = file(news.txt);
            $array = array_reverse($array)
            for($i=0; $i<=sizeof($array); $i = $i+1)
            {
                 echo "$array[$i] <p>";
            }
            ?>
            </body>
            </html>

            news.txt:
            test
            test
            test
            test
            test

            Ich erhalte aber folgende Ausgabe:
            戼⁲㸯㰊㹢慐獲⁥牥潲㱲戯㨾†祳瑮硡攠牲牯‬湵硥数瑣摥吠䙟剏椠戼䌾尺牐杯慲浭履慸灭屰瑨潤獣湜睥晳敥敤⹲桰㱰戯‾湯氠湩⁥戼㜾⼼㹢戼⁲㸯

            Was mache ich falsch?

            1. Hi,

              $array = file(news.txt);

              mach hier mal
              echo "<pre>";
              print_r($array)
              echo "</pre>";
              So kannst Du Dir den Originalarray anzeigen lassen.

              $array = array_reverse($array)

              hier nochmal
              echo "<pre>";
              print_r($array)
              echo "</pre>";
              um den veränderten Array anzuzeigen. So stellst Du fest, ob Deine Ursprungsdaten ok sind. Ist das der Fall liegt Dein Fehler in Deiner Ausgabe.

              Gruesse, Joachim

              --
              Am Ende wird alles gut.
              1. $array = file(news.txt);
                mach hier mal
                echo "<pre>";
                print_r($array)
                echo "</pre>";
                So kannst Du Dir den Originalarray anzeigen lassen.

                $array = array_reverse($array)
                hier nochmal
                echo "<pre>";
                print_r($array)
                echo "</pre>";
                um den veränderten Array anzuzeigen. So stellst Du fest, ob Deine Ursprungsdaten ok sind. Ist das der Fall liegt Dein Fehler in Deiner Ausgabe.

                Ich hab das jetzt gemacht. Bloß an der Ausgabe ändert sich nichts.

                1. Hello,

                  Ich hab das jetzt gemacht. Bloß an der Ausgabe ändert sich nichts.

                  Lies Dir bitte dedlfix Posting nochmal durch. Das war zwar sehr kompakt, aber mMn bisher das einzige, dass in der Sache (Grundlage) zum Ziel führt.

                  Er sagte, dass Du die neue Zeile in eine neue Datei schreiben sollst und dann die alte Datei hinten anhängen sollst. Anaschließend musst Du natürlich die alte Datei löschen und die neue umbenennen auf den namen der alten. Das schreieb er nicht. Allerdings solltest Du das eventuell schon selber gewusst haben.

                  Während dieses ganzen Vorganges musst Du sowohl die alte als auch die neue Datei durch einen entsprechenden Mechanismus schützen gegen den Zugriff duch weitere Benutzer. Das muss nicht unbedingt gleich ein totales Lock (Exclusives Lock) sein. Für den Anfang wäre es aber am einfachsten.

                  Harzliche Grüße vom Berg
                  http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau

  2. Hallo und guten Tag,

    Also wie wenn man eine Datei mit fopen(irgentwas.txt, a) öffnet bloß, dass man etwas am Anfang hinzufügt.

    Versuchs mal andersrum...
    Ergänze Dein Textfile am ende der Datei und drehe bei der Ausgabe die Reihenfolge so um:

    //ausgeben
    $filename = "test.csv";
    // Datei "zeilenweise" in ein Array einlesen
    $array = file($filename);
    // $array von hinten nach vorne sortieren
    $i = sizeof($array);
    while ($i--) {echo trim($array[$i]) . "<br>";}

    Evtl. reicht das schon?!

    Guma

    1. Hi,

      // $array von hinten nach vorne sortieren
      $i = sizeof($array);
      while ($i--) {echo trim($array[$i]) . "<br>";}

      dafür gibts rsort.

      Gruesse, Joachim

      --
      Am Ende wird alles gut.
      1. Hallo Joachim:

        // $array von hinten nach vorne sortieren
        dafür gibts rsort.

        in der Kombination mit dem Text stimmt dies, diese Funktion ist jedoch kein Ersatz für das Umdrehen eines Arrays, was folgender Code bewirken soll:

        $i = sizeof($array);
        while ($i--) {echo trim($array[$i]) . "<br>";}

        Beispiel:

        $fruits = array("Banane", "Orange", "Zitrone", "Apfel");

        Das Ergebnis von rsort($fruits); ist wie im Handbuch:

        Zitrone
          Orange
          Banane
          Apfel

        Das Ergebnis von $ausgabe = [link:http://www.php.net/manual/de/function.array-reverse.php@title=array_reverse]($fruits); hingegen wäre:

        Apfel
          Zitrone
          Orange
          Banane

        Wenn man ein Array von hinten nach vorne lesen möchte, welches ist wohl das gewünschte Ergebnis?

        Freundliche Grüße

        Vinzenz

        1. Hi,

          Apfel
            Zitrone
            Orange
            Banane

          Du meinst ich vergleiche Äpfel mit Birnen?
          ;-)

          im Ernst, reverse ist geeignet, siehe anders Posting...

          Gruesse, Joachim

          --
          Am Ende wird alles gut.
  3. Hallo,

    das ist eine so oft gefragte Frage, dass die Frage und ihre Antwort tatsächlich in den oft gefragten Fragen steht:
    de.comp.lang.php.* FAQ: 13.4. Wie kann ich in einer Datei eine Zeile einfügen oder löschen?

    Gruß, Thoralf

    --
    Sic Luceat Lux!