Steve: wie newlines richtig entfernen?

Hallo!

Ich schreibe mir gerade ein script zum email-Versand über ein Formular.
Nach dem Absenden des Formulars möchte ich unerwünschte newlines aus den headern entfernen.

Mein Ansatz sieht so aus:
($_POST['usermail']['subject'] ist eines der Fomularfelder)

$trimSubject = trim($_POST['usermail']['subject']);  
echo htmlspecialchars($trimSubject)."\n";  
$trimSubject = str_replace(array("\r", "\n", "\0", "\x0B"), '', $trimSubject);  
echo htmlspecialchars($trimSubject);

Wenn ich jetzt z.B. "test \n" in mein Formularfeld eingebe wird aber 2 mal exakt "test \n" ausgegeben.

Ich dachte trim() entfernt mir whitespaces am Anfang und Ende. Das "\n" bleibt aber.
Der zweite Versuch mit str_replace() entfernt das \n auch nicht.

Wo liegt mein Fehler?

Danke, Steve

  1. Wenn ich jetzt z.B. "test \n" in mein Formularfeld eingebe wird aber 2 mal exakt "test \n" ausgegeben.

    steht da "test \n" oder "test
    "?

    Der zweite Versuch mit str_replace() entfernt das \n auch nicht.

    Welches Zeichen ist den wirklich enthalten?

    1. Hallo suit!

      steht da "test \n" oder "test
      "?

      "test \n"

      Welches Zeichen ist den wirklich enthalten?

      Wo? Wie meinst du das?

      Steve

      1. steht da "test \n" oder "test
        "?

        "test \n"

        Und das willst du mit "\n" finden - oder nicht doch lieber mit '\n'?

        Willst du jetzt die Zeichenfolge \n ersetzen oder das Newline-Zeichen?

        http://php.net/manual/en/language.types.string.php

        Welches Zeichen ist den wirklich enthalten?

        Wo? Wie meinst du das?

        Wenn du ein Zeichen ersetzen möchtest, ist es von Vorteil zu wissen um welches Zeichen es sich handelt.

        Dazu könntest du dir z.B. deinen String in eine hexadezimale Variante überführen.

        1. Und das willst du mit "\n" finden - oder nicht doch lieber mit '\n'?
          Willst du jetzt die Zeichenfolge \n ersetzen oder das Newline-Zeichen?

          Achsooo... hab dich verstanden. Danke!

          Steve

  2. Hi!

    Ich schreibe mir gerade ein script zum email-Versand über ein Formular.
    Nach dem Absenden des Formulars möchte ich unerwünschte newlines aus den headern entfernen.

    Das ist für das Subjekt und die To-Angabe nicht notwendig, denn dort ersetzen aktuelle PHP-Versionen Steuerzeichen durch Leerzeichen (mit Ausnahme einer Regel in der RFC 822, Abschnitt 3.1.1 für korrekt gesetzte Umbrüche in ansonsten überlangen Zeilen.

    Für den Mailtext sind Steuerzeichen ungefährlich, lediglich die zusätzlichen Header musst du selbst berücksichtigen.

    Lo!