webentwicklung-frage-antwort-db.com.de

zeilenumbrüche in einem Textbereich

Ich weiß, wenn Sie ein Textfeld speichern, können Sie mit nl2br () oder str_replace die/n in br-Tags usw. ändern. Ich kann nicht viel finden, die Daten mit diesen Zeilenumbrüchen wieder in einen Textbereich zu bringen.

Zum Beispiel habe ich ein Formular, in dem Benutzer Felder aktualisieren können. Der Benutzer kann also Folgendes eingeben:

foo
bar
baz

Wenn das in der Datenbank gespeichert wird, wird es gespeichert als:

foo<br />bar<br />baz<br />

Wenn dieser Benutzer nach einer Seitenaktualisierung zu diesem Formular zurückkehrt, werden alle Felder automatisch mit ihren vorherigen Daten gefüllt, indem die Daten aus der Datenbank übernommen werden.

Im Textbereich werden jedoch die br-Tags als Text angezeigt, anstatt die Zeilenumbrüche hinzuzufügen. Ich habe auch versucht, die br-Tags in/n zu ändern, in der Hoffnung, dass der Textbereich diese als Zeilenumbrüche interpretiert, aber keine Freude. Außerdem habe ich auch versucht zu entkommen usw.

Also meine fragen können das gemacht werden? Oder was noch wichtiger ist, kann dies mit HTML/PHP (im using smarty) erfolgen. Wenn das nicht möglich ist, kann dies mit Javascript geschehen?

Beispiele wären willkommen.

danke fürs Lesen

31
fl3x7

nl2br darf nicht verwendet werden, wenn Sie es in der Datenbank speichern. nl2br, wenn Sie den Text in HTML anzeigen. Ich kann nachdrücklich empfehlen, keine HTML-Formatierungen in der Datenbank zu speichern (es sei denn, Sie verwenden ebenfalls einen Rich-HTML-Editor. In diesem Fall wäre es dumm, dies nicht zu tun).

Eine neue Zeile \n wird gerade zu einer neuen Zeile im Textbereich.

64
Halcyon

Sie können str_replace verwenden, um die <br />-Tags in Zeilenendezeichen zu ersetzen.

str_replace('<br />', PHP_EOL, $textarea);

Alternativ können Sie die Daten in der Datenbank speichern, ohne zuerst nl2br aufzurufen. Auf diese Weise bleiben die Zeilenumbrüche bestehen. Wenn Sie als HTML anzeigen, rufen Sie nl2br auf. Ein weiterer Vorteil dieses Ansatzes besteht darin, dass weniger Speicherplatz in Ihrer Datenbank benötigt wird, da ein Zeilenumbruch aus 1 Zeichen besteht, im Gegensatz zu "<br />" (6).

26

Ahh, es ist wirklich einfach

einfach hinzufügen 

white-space:pre-wrap;

zu Ihrem Anzeigeelement css

Ich meine, wenn Sie Ergebnis mit <p> anzeigen, dann sollte Ihre CSS sein

p{
   white-space:pre-wrap;
}
22
Nizam Kazi

Sie können folgenden Code verwenden:

$course_description = nl2br($_POST["course_description"]);
$course_description = trim($course_description);
6
rahul

Meine Empfehlung ist, die Daten mit Zeilenumbrüchen in der Datenbank zu speichern, statt sie mit nl2br zu analysieren. Sie sollten nl2br in der Ausgabe und nicht in der Eingabe verwenden.

Für Ihre Frage können Sie PHP oder Javascript verwenden:

PHP:

str_replace('<br />', "\n", $textarea);

jQuery:

$('#myTextArea').val($('#myTextArea').val().replace(@<br />@, "\N"));
1
Ryan Casas

Einige falsche Antworten werden hier gepostet .. _. Statt \n in <br /> zu ersetzen, ersetzen sie <br /> in \n.

Also, hier ist eine gute Antwort, um <br /> in Ihrem mysql zu speichern, wenn Sie in textarea eingegeben haben:

str_replace("\n", '<br />',  $textarea);
1
Bashir Noori

Der einfache Weg:

  1. Verwenden Sie dies, um in mysql einzufügen:

    $msg = $_GET['msgtextarea']; //or POST and my msg field format: text
    $msg = htmlspecialchars($msg, ENT_QUOTES);
  2. Und verwenden Sie dies für die Ausgabe:

    echo nl2br($br['msg']);
1

Was ich gefunden habe, funktioniert in dem Formular.

0
Mike

Von PHP mit einfachen Anführungszeichen für den Zeilenumbruch funktionierte ich für die Unterstützung der Zeilenumbrüche, wenn ich diese var an einen HTML-Textbereichwert-Attribut übergebe

PHP

foreach ($videoUrls as $key => $value) {
  $textAreaValue .= $value->video_url . '\n';
}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

HTML/JS

$( document ).ready(function() {
    var text = "<?= htmlspecialchars($textAreaValue); ?>";
    document.getElementById("video_urls_textarea").value = text;
});
0
Gene Bo

PHP-Seite: von Textarea-Zeichenfolge zu PHP

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

PHP-Seite: PHP Zeichenfolge zurück zu TextArea-Zeichenfolge:

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

Das funktioniert bei mir.

 str_replace(array("\r", "\n"), '&#10;', $textareavalue);
0
Joel Enanod Jr