Ankündigung

Einklappen
Keine Ankündigung bisher.

datei mit leerzeichen auslesen

Einklappen

Neue Werbung 2019

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

  • datei mit leerzeichen auslesen

    Ich versuche über php eine Textdatei von meinem Server auszugeben.
    Dafür habe ich folgenden Quellcode benutzt.

    PHP-Code:
    <?php
    $lines 
    file('datei.txt');
    foreach (
    $lines as $line_num => $line) {
    echo 
    $line "<br>\n";
    }
    ?>
    Nur leider ist das Problem das Leerzeichen am Anfang jeder Zeile nicht beachtet werden und dadurch die Einschübe nicht richtig angezeigt werden.
    Hat einer eine Idee was ich falsch mache?
    Danke in voraus.

    Marcel

    hausl Danke, wusste nicht das es da nen Unterschied gibt.
    Das mit dem <pre> <code>, wie meinst du das?
    So:
    PHP-Code:
    <?php
    $lines 
    file('datei.txt');
    foreach (
    $lines as $line_num => $line) {
    echo 
    "<pre> <code>" $line "</code> </pre>" "<br>\n";
    }
    ?>
    entstehen nämlich immer riesige Abätze nach jedem Zeilenende.Aber die Leerzeichen sind da.

  • #2
    PHP-Code:
    <?php
      $data 
    file_get_contents('datei.txt');
     
      echo 
    "<pre>" nl2br($data) . "</pre>";
    ?>

    Kommentar


    • #3
      Also das beste Ergebnis was ich raus bekommen habe ist:
      PHP-Code:
      <?php
      $lines 
      file('datei.txt');
      foreach (
      $lines as $line_num => $line) {
      echo 
      "<pre>" $line "</pre>";
      }
      ?>
      Da gibt es aber immer noch eine Leerzeile zwischen jeder Datei-Zeile.

      uha Dein Code gibt bei mir sogar zwei Leerzeilen aus.

      Kommentar


      • #4
        Was willst du denn Konkret ? Das dein Text als Absatz-gesteuert dargestellt wird ? Falls das so sein sollte, ist das ganze hier der Falsche Ansatz.

        https://eval.in/private/bf794af591552c

        Generell sollte man anmerken das <br />'s keine kosmetische Aufgaben verfolgen sollten. Wenn du Absätze brauchst, definiere auch Absätze ( <p> )

        Kommentar


        • #5
          tr0y Naja ich möchte eine Text-Datei mit Leerzeichen am Anfang ausgeben.
          z.B.:
          Datei.txt:
          Zeile1
          Zeile2
          Zeile3
          Zeile4

          Und das halt so auf der php-Seite augegeben wie es in der Datei steht.
          Aber er gibt mir immer:
          Zeile1
          Zeile2
          Zeile3
          Zeile4 aus. Wobei ich grade beim kopieren feststelle das da keine Leerzeile dazwischen ist,
          sondern das die Zeilen komisch Formatiert sind.

          Kommentar


          • #6
            :/ ich hatte den Text eigentlich ordentlich eingegeben aber er hat es zu normalem Text geändert.

            Kommentar


            • #7
              ok nochmal als bild
              Angehängte Dateien

              Kommentar


              • #8
                Ja, da brauchst das nl2br() offensichtlich nicht. Die Funktion ERSETZT nämlich nicht Zeilenumbrüche durch <br>-Tags, sondern FÜGT die <br>-Tags HINZU. Mit <pre> und nl2br() hast du jetzt einmal den Zeilenumbruch durch das new Line-Steuerzeichen und einmal einen HTML-Zeilenumbruch durch das <br>.

                Also entweder nl2br() weglassen und nur <pre> nehmen, oder einfach den Content-Type auf plain/text stellen, falls du nicht noch etwas anderes ausgeben möchtest. (Was imo die sinnvollere Idee ist, weil du dich dann auch nicht um HTML-Escaping kümmern musst.)

                Kommentar


                • #9
                  Dann gib den Inhalt einer Datei einfach innerhalb eines DIVs aus mit style="white-space: pre;"-Attribut:

                  http://jsfiddle.net/hd5z9f7f/

                  Kommentar


                  • #10
                    tr0y bei:
                    PHP-Code:
                    <div style="white-space: pre; background: blue; color: white">
                    <?php
                    $lines 
                    file('upload/datei2.txt');
                    foreach (
                    $lines as $line_num => $line) {
                    echo 
                    "<pre>" $line "</pre>";
                    }
                    ?>
                    </div>
                    ist der hintergrund zwar blau aber die Leerzeilen oder die komische formatierung der Zeilen wird bei berhalten.

                    Tropi die Ausgabe die ich gesendet habe ist nur mit pre und es entsteht leider trotzdem eine Leerzeile.
                    Wie meinst du soll ich den Content-Type auf plain/text stellen? (wenn das eine dumme frage ist tut es mir leid aber ich kenne php noch nicht so gut)
                    Ich habe mal gegoogelt, was ich gefunden habe ist: header('Content-Type: plain/text');
                    Aber wenn ich das einfüge will er das ich mir die Datei runterlade.

                    Kommentar


                    • #11
                      lass die Pre's weg..

                      PHP-Code:
                      $html '<div class="white-space: pre;">%s</div>';

                      echo 
                      sprintf($htmlfile_get_contents('upload/datei2.txt')); 

                      Kommentar


                      • #12
                        tr0y also das ergibt bei mir die Ausgabe:
                        Zeile1 Zeile2 Zeile3 Zeile4

                        Kommentar


                        • #13
                          Ist da noch HTML drumherum oder wird dort noch css definiert ?

                          Kommentar


                          • #14
                            tr0y nein

                            Kommentar


                            • #15
                              Och ich bin so langsam blind.. nicht class, style .. Sorry :P

                              PHP-Code:
                              $html '<div style="white-space: pre;">%s</div>';

                              echo 
                              sprintf($htmlfile_get_contents('upload/datei2.txt')); 
                              Bedenke aber das du kein Vollständiges HTML(5)-Dokument dem Browser lieferst, und der theoretisch tun und lassen kann was er will mit dem was er bekommt ( fernab allen Standards ).

                              Kommentar

                              Lädt...
                              X