Alle Textdateien eines Verzeichnisses auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Alle Textdateien eines Verzeichnisses auslesen

    Also, ich hab im Scriptverzeichnis Textdateien die ich auslesen möchte (alle).

    Fangen mit dem Tag <name>bis</name> an.

    Er soll jeden einzelnen Namen als Hyperlink zu einer weiteren Seite angeben. Dabei soll z.B. der Dateiname asl Variable "$name" übergeben werden ...

    Wie kann ich das anstellen (vorallem alle Textdateien öffnen) ???

    mfg DaPhreak
    If something's HARD to do,

    then it's not worth doing.
    (Homer J. (Jay) Simpson)

  • #2
    so?:

    $verz = opendir(".../verzeichnis");
    $dat = readdir($verz);
    while ($dat)
    {
    echo $dat;
    $inh[] = file("./verzeichnis/".$dat);
    $dat = readdir($verz);
    }

    1. handle auf das Verzeichniss
    2. erster Dateiname im Verzeichniss in $dat
    3. wenn eine Datei da ist wird $dat=Dateiname sonst false
    weitere Aufrufe von readdir geben immer den jeweils
    nächsten Dateinamen her. (bis $dat = false) dann ist
    mit der Schleife Schluß.
    3a. in der Schleife wird mit file die Datei ausgelesen und
    ins $inh array geschrieben


    Hoffe ich habe nix vergessen?
    MFG

    und:

    [Editiert von J'Moa am 01-03-2002 um 16:14]
    ersma locker bleiben!

    Kommentar


    • #3
      Und wenn das Verzeichnis das selbe wie das Verzeichnis des Scripts ?????

      Ach ja und was wenn ich nur die Dateien mit der Endung txt auslesen lassen möchte und keine Startdatei angebe, da dass sehr sinnlos wäre...
      If something's HARD to do,

      then it's not worth doing.
      (Homer J. (Jay) Simpson)

      Kommentar


      • #4
        ersma die Schleife optimieren ...
        Code:
        $verz = opendir(".../verzeichnis"); 
        while ($dat = readdir($verz)) 
        { 
          echo $dat; 
          $inh[] = file("./verzeichnis/".$dat); 
        }

        Original geschrieben von DaPhreak
        Und wenn das Verzeichnis das selbe wie das Verzeichnis des Scripts ?????
        Dann heißt das Verzeichnis '.' (einfach nur ein Punkt)

        Ach ja und was wenn ich nur die Dateien mit der Endung txt auslesen lassen möchte
        Dann prüfst du vor der Ausgabe den Dateinamen, ob der mit .txt endet:
        Code:
        $verz = opendir(".../verzeichnis"); 
        while ($dat = readdir($verz))
          if ([url="http://www.php3.de/de/ereg"]ereg[/url]('\.txt$', $dat)
          { 
            echo $dat; 
            $inh[] = file("./verzeichnis/".$dat); 
          }
        Ach ja ... und dann wolltest du ja einen Link haben:
        Code:
        $verz = opendir(".../verzeichnis"); 
        while ($dat = readdir($verz))
          if ([url="http://www.php3.de/de/ereg"]ereg[/url]('\.txt$', $dat)
            echo '<href="', raw_url_encode($dat), '">', $dat, '</a><br>;
        Auf das Aufbauen des Arrays $inh kannst du verzichten, den Inhalt brauchst du ja erst auf der nächsten Seite.
        Und Textdateien zeigt der Browser sowieso direkt an, daher musst du auch kein PHP-Skript dazwischen schalten.

        Wenn du das unbedingt doch willst:
        echo '<href="read.php?name=', raw_url_encode($dat), '">', $dat, '</a><br>;
        und read.php:
        $inhalt = file($name);
        echo nl2br(htmlentities(implode('', $inhalt)));


        [Editiert von Titus am 01-03-2002 um 19:37]
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Oh ... ich hab da was übersehen.
          Original geschrieben von DaPhreak
          Fangen mit dem Tag <name>bis</name> an.
          Code:
          $verz = opendir(".../verzeichnis"); 
          while ($dat = readdir($verz))
            if (ereg('\.txt$', $dat)
            {
              // Text lesen
              $txt = implode('', file($dat));
              // Name-Tag extrahieren
              if ([url="http://www.php3.de/de/ereg"]ereg[/url]('(<name> )(.*)(</name> )', $txt, $regs))
                $name = $regs[2]
              else
                $name = substr($dat, 0, strrpos($dat, '.')-1);
              echo '<href="read.php?name=', raw_url_encode($dat), '">',
                $name, '</a><br>;
            }
          Die Leerzeichen musst Du aus dem regulären Ausdruck rausnehmen, die musste ich hier nur benutzen damit das Forum aus der Klammer keinen Smilie macht.

          read.php:
          $txt = implode('', file($name));
          $txt = substr($txt, strpos('</name>', $txt));
          echo nl2br(htmlentities($txt));
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Nu muss ich mich mal verbessern...

            Ich meinte der Text edr im Tag <name> bis </name> steht soll als Hyperlink angezeigt werden.

            Und der restliche Teil der Datei im Tag <text> bis </text> sollte dann in der read.php angezeigt werden ....

            sorry

            [Editiert von Titus am 01-03-2002 um 21:48]
            If something's HARD to do,

            then it's not worth doing.
            (Homer J. (Jay) Simpson)

            Kommentar


            • #7
              [QUOTE]Original geschrieben von DaPhreak
              Und der restliche Teil der Datei im Tag <text> bis </text> sollte dann in der read.php angezeigt werden ....
              ok. dann geh in der read.php genau so vor wie in der Linkliste, nur anders (sprich mit geändertem regulären Ausdruck:

              Code:
              $txt = implode('', file($name));
              if (ereg([b]'(<text> )(.*)(</text> )'[/b], $txt, $regs))
                    $inhalt = $regs[2]
                  else
                    $inhalt = substr($dat, 0, strrpos($dat, '.')-1);
                  echo '<href="read.php?name=', raw_url_encode($dat), '">',
                    $name, '</a><br>;
              echo nl2br(htmlentities($txt));
              oder noch etwas vereinfacht mit dem trinären Operator:
              Code:
              $txt = implode('', file($name));
              $inhalt = (
                ereg([b]'(<text> )(.*)(</text> )'[/b], $txt, $regs)
                ? $regs[2]
                : $txt
              );
              echo nl2br(htmlentities($inhalt));
              Das nl2br(htmlentities()) sorgt übrigens dafür, dass der Text genauso angezeigt wird, wie eine Text-Datei angezeigt werden würde: keine Interpretation von HTML-Tags, dafür Zeilenumbrüche (nl) in <br> umgewandelt.

              PS: Der Quote war überflüssig -)
              Habe dein Posting mal erleichtert.
              mein Sport: mein Frühstück: meine Arbeit:

              Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

              Kommentar


              • #8
                Titus, kannste mir mal sagen was daran falsch ist ???
                Code:
                while ($dat = readdir($verz))
                  if (ereg('\.txt$', $dat)
                  [b]{[/b] <---- [b]Parse error[/b]
                    // Text lesen
                mfg DaPhreak
                If something's HARD to do,

                then it's not worth doing.
                (Homer J. (Jay) Simpson)

                Kommentar


                • #9
                  Ja parse error weil eine ) in dem if fehlt...
                  Schaut Ihr Euch Eure codes eigentlich auch mal an?
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    @MelloPie

                    Ich schau hier täglich an die 40 Postings an und antworte auf einen Großteil davon - meistens so erfolgreich, dass keine Rückfrage mehr kommt, oft gibt´s statt dessen ein Herzliches Dankeschön.

                    Bei täglichen zehn bis zwanzig Postings zusätzlich zur bezahlten Arbeit auch noch jedes einzelne Popelskript auf Herz und Nieren zu testen, wäre übertrieben, denn meistens sind die fehlerfrei. Und die Tippfehler die sich gelegentlich einschleichen, werden auch mal von anderen entdeckt, wie du gerade bewiesen hast.
                    mein Sport: mein Frühstück: meine Arbeit:

                    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                    Kommentar


                    • #11
                      @titus...
                      sorry ich wollte Dich nicht irgendwie angreifen, Du hast ja nur geholfen.
                      Aber wenn ich ein Script schreibe oder wie in diesem Falle von Dir bekomme und teste das und da steht dann parse error in line 14 und da fehlt ne Klammer, dann sollte ich das doch selbst finden. Oder meinste net.

                      Will sagen die Aussage war eigentlich an DaPhreak gerichtet.

                      Ich finds voll ok bei probs zu helfen, aber wenn hier immer jeder komplette scripte haben will und nicht ein Minimum an Eigeninitiative hat, kann ich das nicht immer nachvollziehen.
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar


                      • #12
                        Tut mir ja leid, wenn mein begränzter Horizont in PHP
                        aufregt, aber ich versuch ja selbst was zu tun ...

                        Mal schaun ..

                        mfg DaPhreak
                        If something's HARD to do,

                        then it's not worth doing.
                        (Homer J. (Jay) Simpson)

                        Kommentar

                        Lädt...
                        X