Peter: Zeilenumbruch in einem mehrzeiligen Textfeld

Hallo Forum,

wenn ich den Inhalt eines mehrzeiligen Textarea-Feldes nach dem Absenden über PHP wieder anzeigen lasse (als Bestätigung für den Absender), wird der Inhalt nur als Fließtext dargestellt. Absatzschaltungen mit 'Return' werden nicht übernommen, egal, ob ich das Textfeld mit WRAP="Hard" oder WRAP="Soft" schreibe.

Beim Versenden des Inhalts mit einer Mail werden die Absätze dagegen korrekt übernommen.

Gibt es eine Möglichkeit, dass die Absätze auch mit der Anzeigeart ... echo "$Inhalt"; ... angezeigt werden?

Über Antworten freue ich mich! :-)

viele Grüße
Peter

  1. Hi,

    na ja, dein "Problem" ist HTML selber, ich nehme mal an du zeigst ihm den Text auf einer ganz normalen Ausgabeseite wieder an. In dem Fall wirst du ja sicherlich einsehen, dass
    <body>
    Hier
        steht
       Text
    </body>

    in der Ausgabe ebenso wie
    <body>Hier steht Text</body>

    einfach nur den Text rausbringt, weil die Füllzeichen ignoriert werden. Du musst also einen Escape auf alle in HTML nicht darstellbaren Zeichen vornehmen, das betrifft in deinem Fall den Newline-Character, in jedem Fall aber auch Umlaute und Sonderzeichen wie "<" und ">". Du solltest also vor der Ausgabe oder zu einem anderen Zeitpunkt (z.B. beim Speichern der Daten) eine Konvertierung vornehmen:
    http://de3.php.net/manual/en/function.htmlentities.php
    http://de3.php.net/manual/en/function.nl2br.php

    Viel Spaß!

    MfG
    Rouven

    --
    -------------------
    ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
    1. Hallo Rouven,

      Danke für Deine Antwort!
      Ich hoffe, dass ich nun mit euren Hilfen die Lösung zusammen bekomme!

      viele Grüße
      Peter

  2. Hallo Peter,

    wenn ich den Inhalt eines mehrzeiligen Textarea-Feldes nach dem Absenden über PHP wieder anzeigen lasse (als Bestätigung für den Absender),

    die Zeilenumbrüche werden angezeigt (schau mal in den Quelltext!) - nur macht HTML in der Anzeige keine Zeilenumbrüche draus - dafür musst du schon <br> bemühen.

    Gibt es eine Möglichkeit, dass die Absätze auch mit der Anzeigeart ... echo "$Inhalt"; ... angezeigt werden?

    zum 593843.Mal: du suchst nl2br().

    Grüße aus Nürnberg
    Tobias

    1. Hallo Tobias,

      zum 593843.Mal: du suchst nl2br().

      Herzlichen Dank! :-)
      viele Grüße
      Peter

  3. Hallo Peter,

    Gibt es eine Möglichkeit, dass die Absätze auch mit der Anzeigeart ... echo "$Inhalt"; ... angezeigt werden?

    Ja. Wenn ich Dich richtig verstanden habe, dann sendest Du den Inhalt eines Formulars erneut an den User, um diesen schlußendlich per Mail zu versenden. Bei der Mail, so entnehme ich Deinem Problemvortrag, werden die Umbrüche korrekt angezeit (sie sind also da).

    Wenn in einer Mail keine Angabe (Content-Type) zum MIME-Type des Inhalts gemacht wird, wird dieser allermeist von der Clientsoftware als text/plain dargestellt. Dabei werden auch die Eingaben von Textumbrüchen berücksichtigt. Die Funktion mail() von PHP fügt meines Wissens nach keinen Content-Type einem zu versendenden Text zu.

    Bei der Anzeige des eingegebenen Inhalt im Browser liegt gleiche Problematik des Content-Type vor. Mit PHP wird bspw. über die Anweisung echo "$Inhalt"; eine Ausgabe vom Server an den Browser bewerkstelligt. Diese wird per Konfiguration des Servers (aber auch PHPs!) allermeist im MIME-Type text/html geschehen. Prizipell wäre es möglich hier auch einen anderen Content-Type anzugeben, nur macht dies wenig Sinn, da nicht nur einige Browser hier eklatante Fehler machen, sondern insbesondere für Deinen Fall keine Möglichkeite mehr bestünde, HTML-Elemente (Formulare) zu nutzen.
     Der Browser bekommt allerdings sehr wohl auch die eingegebenen Textumbrüche. Ein Blick in den Quelltext des servierten Dokuments wird dies beweisen. Allerdings wird ein Textumbruch durch Rendern und durch das HTML-Element <br> erreicht.

    Kurz und knapp:

    Du kannst mit nl2br() oder str_replace() oder ..... arbeiten, um die Ausgabe HTML-gerecht zu machen.

    Gruß aus Berlin!
    eddi

    1. Hallo Eddi,

      ganz herzlichen Dank für Deine Antwort!
      Hat mir gut weitergeholfen!

      Viele Grüße
      Peter

  4. Hallo eddi, Tobias und Rouven,

    es hat geklappt!
    Nochmals Danke!

    viele Grüße
    Peter