php :: neue Zeile im Textbereich?

Lesezeit: 3 Minuten

Benutzeravatar von Hailwood
Hagelholz

Wie erstellen Sie eine neue Zeile in einem Textfeld, wenn Sie den Text über PHP einfügen?

ich dachte es wäre \n aber das wird buchstäblich in den Textbereich gedruckt.

Danke

  • Zeigen Sie uns Ihren Code, ich wette, Sie tun so etwas wie echo '\n'; anstatt echo "\n";.

    – Markus Elliot

    12. Oktober 2010 um 2:26 Uhr

  • eigentlich mache ich echo $contact->address; Damit es funktioniert, muss ich tun str_replace('\n', "\n", $contact->address) was verzögert ist. Warum das?

    – Hagel

    12. Oktober 2010 um 2:27 Uhr

  • Wie speichern Sie die Daten. Bei der Übersetzung geht etwas verloren. Tust du add_slashes? In einer Datenbank speichern?

    – Jason McCreary

    12. Oktober 2010 um 2:31 Uhr

  • @ Haiwood. Sie müssen dann ein wörtliches ‘\n’ haben. Das heißt, zwei Zeichen, ein umgekehrter Schrägstrich und ein en, kein Zeilenumbruchzeichen (das der Einfachheit halber als “\n” dargestellt wird, aber es ist wirklich nur ein Zeichen; um diese Syntax zu verwenden, müssen Sie doppelte Anführungszeichen verwenden; dasselbe gilt für Tabulatoren, zum Beispiel, \t).

    – Juan Pablo Califano

    12. Oktober 2010 um 2:49 Uhr

  • Wie kommst du auf die \n, geben Sie es als zwei verschiedene Zeichen ein oder drücken Sie die Eingabetaste? Genauer gesagt, woher stammen Ihre Daten?

    – Markus Elliot

    12. Oktober 2010 um 3:00 Uhr

Ohne Ihren Code zu sehen, kann ich nicht sicher sein, aber ich vermute, dass Sie einfache Anführungszeichen (‘\n’) anstelle von doppelten Anführungszeichen (“\n”) verwenden.

PHP wertet Escape-Sequenzen nur aus, wenn die Zeichenfolge in doppelte Anführungszeichen eingeschlossen ist. Wenn Sie ‘\n’ verwenden, nimmt PHP das einfach als wörtlichen String. Wenn Sie “\n” verwenden, analysiert PHP den String auf Variablen und Escape-Sequenzen und gibt eine neue Zeile aus, wie Sie es erwarten.

  • Und was, wenn Sie keine Anführungszeichen verwenden;) (dh es kommt direkt von einer Variablen.

    – Hagel

    14. Oktober 2010 um 0:00 Uhr

Versuchen

$text="text line one" . PHP_EOL . 'text line two';
echo '<textarea>' . $text . '</textarea>';

Fügt jeden Text in einer Reparate-Zeile in Texarea hinzu.

PHP-Seite: von Textarea-String zu PHP-String

$newList = ereg_replace( "\n",'|', $_POST['theTextareaContents']);

PHP-Seite: PHP-String zurück zum TextArea-String:

$list = str_replace('|', '&#13;&#10;', $r['db_field_name']);

  • das war genau das was ich suche

    – BIBIN JOHN

    8. März 2017 um 6:54 Uhr

Was Alay Geleynse sagte, war richtig, ich hatte das gleiche Problem wie Sie und das Problem lag an den Escape-Zeichen (\r, \n). Um die von mir verwendete Variable zu entsperren $var = stripcslashes($var) und es wird richtig angezeigt

Wagenrückgabe

\n 
\r
<br />
^M

2020 – Google hat mich wegen etwas Ähnlichem hierher gebracht.

Aufbauend auf der Antwort von Benutzer @Va1iant oben

Umfeld:

  • HTML5 / Bootstrap 4.5
  • php7.3.x
  • Mariadb 10.2.x

Problem :

  • Eingabeformular mit Textbereich (kein Problem, dass \r\n nach dem Posten in der Datenbank erscheint)
  • Bearbeitungsformular mit Textbereich ( \r\n erscheint in der Datenbank und auch im Bearbeitungsformular nach dem Posten )

Lösung:

  • DB – Spaltentyp für den Inhalt des Textbereichs auf “varchar” gesetzt
  • Formular bearbeiten – Code-Snippet für den Inhalt im Textbereich (Stripcslashes verwendet), wie unten gezeigt
<?= isset($_POST['MailingAddress']) ? stripcslashes(misc::esc($_POST['MailingAddress'])) : misc::esc($data['current_mailing_address']) ; ?>

where misc::esc -> return htmlspecialchars($var, ENT_QUOTES|ENT_HTML5, ‘UTF-8’);

Notiz :

Ich habe nicht mit Leerzeichen experimentiert: pre-line; wie unter beschrieben
CSS-Tricks das könnte also auch eine Lösung sein – ohne Stripcslashes zu verwenden.

Benutzeravatar von zod
Zod

Ich habe benutzt \p für Textdateien. versuchen

1444430cookie-checkphp :: neue Zeile im Textbereich?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy