Palme: Textumbruch in PHP-Mail

Hallo,

ich habe ein kleines Skript in PHP geschrieben im Zusammenhang mit einem Formular = Formmailer.

In diesem Formular gibt es die Möglichkeit, in einem Textfeld (<textarea>) eine NAchricht zu verfassen.

Frage:

Wie kann ich in diesem Textfeld einen Zeilenumbruch erreichen?

Mit echo '\r\n' habe ich es schon probiert, aber keinen Erfolg gehabt. In das Textfeld werden beim Absenden des FOrmulars noch zusätzliche Informationen eingetragen, und diese sollen eben untereinander stehen, und nicht nebeneinander, -deshalb brauche ich ein solche Möglichkeit.

Grüße

Palme

  1. Hallo,

    Zeilenumbrueche im HTML-Quellcode bewirken bei der Anzeige
    von HTML nur ein Leerzeichen. Einen Zeilenumbruch kriegst Du mit <br>.
    Das hat aber gar rein nichts mit PHP zu tun.

    Du suchst vermutlich nl2br() oder wordwrap()
    http://www.php.net/manual/de/function.nl2br.php
    http://www.php.net/manual/de/function.wordwrap.php

    Gruesse,

    Thomas

  2. Hallo,

    Du warst schon nauf dem richtigen Weg,

    Aber mach Dir klar, was auf dem Client und was auf dem Server läuft. Textarea ist auf dem Client.

    Die Daten, die Du dort eingibst, werden beim POST (?) an den Server übertragen. Wenn Dumdem Datenfeld nun noch mit

    $datenfeld = $datenfeld."\r\n".$zusatzinfo1."\r\n".$zusatzinfo2;

    was hinzufügst, kannst Dun das auch versenden.

    Viel Erfolg

    Tom

  3. Moin Moin,

    Also 2 Möglichkeiten da ich deine Frage nicht richtig verstanden habe....

    1. Möglichkeit, du möchtest alle in der Texarea eingegebenen Zeilenumbrüche mit übernehmen.... Dazu Textarea in ne Variable (hier kommentar 1) und siehe unterem Beispiel ersetzen lassen.

    $kommentar=ereg_replace("\n","<BR>",$kommentar1);

    2. Möglichkeit: den Inhalt aus der Textarea normal ohne Zeilenumbrüche übernehmen und einen Zusätzlichen Inhalt mit nem Zeilenumbruch getrennt anfügen:

    $kommentar="&kommentar1<BR>$zusatztext";

    Ich hoff das hilft weiter

    Gruß Dave

    1. sorry... verschrieben

      $kommentar="&kommentar1<BR>$zusatztext";
                  ^

      $

      Gruß

    2. Hallo dave,

      $kommentar=ereg_replace("\n","<BR>",$kommentar1);

      Bei einem so simplen Ersetzungsmuster bietet sich str_replace doch viel eher an, da ereg_replace _extrem viele_ Ressource verbrät. Benutze nie Reguläre Ausdrücke, wenn sie nicht absolut notwendig sind, die brauchen einfach zu viel Power.

      Grüße aus Barsinghausen,
      Fabian

      1. Hallo zusammen,

        hier muss man aber gar nichts ersetzen. Es sollte doch gemailt werden, oder?

        Im Mailclient (Text Only) werden die \r\n ausgewertet und nicht die <br>. Von HTML-Mail war nicht die Rede, sondern von "PHP-Mail" (Formmailer).

        Grüße

        Tom

  4. Hallo,

    Danke für Eure Hilfe!

    Das Problem hat sich fast von selbst gelöst.

    Ich hatte folgende Syntax:

    $nachricht = $_POST['email_betreff'].'\r\n\r\n';
    $nachricht .= $_POST['nachricht'];
    ..usw.

    Dies funktionierte nicht, da \r\n\r\n nicht in einfachen Anführungszeichen stehen darf, warum das so ist, kann mir vielleicht noch jemand erklären?

    In doppelten Anführungszeichen klappt das nun auch!

    Nochmals Danke.

    Grüße

    Palme

    1. Hallo,

      Dies funktionierte nicht, da \r\n\r\n nicht in einfachen Anführungszeichen stehen darf, warum das so ist, kann mir vielleicht noch jemand erklären?

      RTFM:

      PHP-Manual: Strings, Einfache und doppelte Anfuehrungszeichen:
      http://www.php.net/manual/de/language.types.string.php

      dclp-FAQ: Anführungzeichen oder Hochkomma?
      http://www.dclp-faq.de/q/q-stil-anfuehrungszeichen.html

      Gruesse,

      Thomas