drfoehn: Zeilenumbruch von Formulardaten ?

Ich habe folgendes Problem:
Ich habe ein kleines feines PHP-Gästebuch geschrieben das eigentlich tadellos rennt. Es ist Taxtdatei- und nicht Datenbank-gestützt.
Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.
Also nicht die Wrap-Funktionen sondern bei der Ausgabe ist ein Fehler.
Kennt sich da wer aus ?
Vielleicht ist es ja ein PHP Problem, aber ich glaub eher nicht.

THX im Voraus
    Janne

  1. Hallo,

    Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.

    Klar, denn in einem Textfeld besteht der Umbruch aus dem Steuerzeichen "\n" (n für new line oder so), welches in der Textdatei, in der es gespeichert wird, eine neue Zeile beginnt. Dem Browser ist das ziemlich wurscht; eine neue Zeile wird von ihm nicht dargestellt. Du musst schon beim Abschicken des Formulars in deinem Skript alle "\n" Zeichen durch das Umbruchzeichen "<br />" ersetzen - am einfachsten geht das mit der Funktion str_replace (siehe http://www.php.net/manual/de/function.str-replace.php).
    Damit sollte das Problem behoben sein.

    Grüße aus Darmstadt,
    Benjamin

    --
    Signatur? Sowas brauche ich nicht, da steht eh' meist nur Nonsens drin.
    1. Hallo

      Nun werden aber die Daten die man einträgt und irgenwo einen Zeilenumbruch macht nicht mit diesem Zeilenumbruch angezeigt. Stattdessen wird lediglich ein Leerzeichen für jeden Umbruch angezeigt.

      Kleine Ergänzung zur Empfehlung von Benjamin

      nl2br()
      http://www.php.net/manual/de/function.nl2br.php

      Gruss,

      Vinzenz

      1. Hallo Vinzenz,

        nl2br()
        http://www.php.net/manual/de/function.nl2br.php

        Klar, das ist natürlich noch besser...
        An die Funktion habe ich im Moment überhaupt nicht gedacht... :-)

        Grüße aus Darmstadt,
        Benjamin

        --
        Signatur? Sowas brauche ich nicht, da steht eh' meist nur Nonsens drin.
        1. Hallo Benjamin,

          nl2br()
          http://www.php.net/manual/de/function.nl2br.php

          Klar, das ist natürlich noch besser...
          An die Funktion habe ich im Moment überhaupt nicht
          gedacht... :-)

          Leider eignen sich weder str_replace(), noch nl2br() dazu, die
          Newlines korrekt umzusetzen. Korrekt waere ein RegEx-Replace
          wie

          $txt = preg_replace('!\015\012|\015|\012!','<br/>',$txt);

          Warum? Nun, ganz einfach: es ist nicht garantiert, dass die
          Newline-Zeichen als \n vorliegen. \n kann, je nach Plattform,
          \015\012, \012 oder \015 sein. Was vom Client kommt, ist
          nicht vorhersehbar.

          Gruesse,
           CK

          1. Hallo Christian,

            hab' ich mal wieder zu wenig nachgedacht und nachgelesen bevor gepostet :-(

            Leider eignen sich weder str_replace(), noch nl2br() dazu, die

            ...

            $txt = preg_replace('!\015\012|\015|\012!','<br/>',$txt);

            ...

            Warum? Nun, ganz einfach: es ist nicht garantiert, dass die
            Newline-Zeichen als \n vorliegen. \n kann, je nach Plattform,
            \015\012, \012 oder \015 sein. Was vom Client kommt, ist
            nicht vorhersehbar.

            Hm, Du hast recht ;-)
            Die Newline-Problematik der verschiedenen OS hatte ich völlig vergessen. Außerdem hätte ich die Anmerkungen im Anschluss an die Funktionsbeschreibung lesen sollen, da gibt es doch eine von

            CK1 at wwwtech dot de
            02-Feb-2001 06:07

            die sieht so verdächtig ähnlich aus

            Gruss,

            Vinzenz

            1. Hallo Vinzenz,

              Außerdem hätte ich die Anmerkungen im Anschluss an die
              Funktionsbeschreibung lesen sollen, da gibt es doch eine von

              CK1 at wwwtech dot de
              02-Feb-2001 06:07

              die sieht so verdächtig ähnlich aus

              Mich wundert irgendwie, dass die noch nicht wegmoderiert
              wurde...

              Gruesse,
               CK

  2. Hallo Dr. Foehn,

    in HTML wird ein Zeilenumbruch im Normalfall nicht als solcher interpretiert, da hierfür das Steuerzeichen <br> vorgesehen ist. Wenn in Deiner Textdatei Zeilenumbrüche enthalten sind, die Du anzeigen möchtest, mußt Du diese in <br> umwandeln, um im Browser das gewünschte Ergebnis zu erhalten.

    Gruß

    Eidgenosse