Textarea und Zeilenumbrüche

brainsucker

Erfahrenes Mitglied
Hallo zusammen:

ich habe ein Projekt übernommen welches folgende Ausgangslage zeigt:

In einer Datenbank stehen Texte die für eine Ausgabe in einer Textarea bestimmt sind. Diese Texte stehen so in der Datenbank:

Name und Vorname \r\n \r\nStrasse und Hausnummer\r\nPostleitzahl und Ort\r\nAnsprechpartner

Über Sinn und Unsinn darf sich zwar unterhalten werden, allerdings werde ich das so weiterhin übernehmen müssen. In der Textarea zeigt er mir das dann konsequenterweise ohne Zeilenumbrüche und das /n/r als Text an. \n\r soll aber durch Zeilenumbrüche in der Textarea ersetzt und als solche dargestellt werden.

Ich habe nun einiges versucht, schaffe es aber nicht das Problem zu lösen.

Das hier habe ich bisher erfolglos versucht:

PHP:
// in $text stehen die texte aus der Datenbank
echo str_replace(array("\r", "\n"), '<br />', $text) ;
echo nl2br($text);
echo strtr($text, array("\r\n" => '<br />', "\r" => '<br />', "\n" => '<br />'));

Ich hoffe ihr könnt mir bei der Lösung helfen!
 
Ich habs mal kurz getestet.
PHP:
$text = "Name und Vorname \r\n \r\nStrasse und Hausnummer\r\nPostleitzahl und Ort\r\nAnsprechpartner";
echo '<textarea>'.$text.'</textarea>';
Führt zur gewünschten Ausgabe.

Interessanterweise gibt es aber einen Unterschied zwischen folgenden beiden Schreibweisen:
PHP:
echo "<textarea>Zeile1\r\nZeile2\r\nZeile3\r\n</textarea>"; 
echo '<textarea>Zeile1\r\nZeile2\r\nZeile3\r\n</textarea>';

Bei Variante 1 (mit "..") werden die \r\n korrekt "übersetzt".
Bei Variante zwei (mit '...') werden die \r\n einfach ausgeschrieben.

Vielleicht kann mich mal jemand schlauer machen woran das liegt?!

//e

Habs schon gefunden :)
http://www.php.net/manual/de/language.types.string.php#language.types.string.syntax.single
 
Zuletzt bearbeitet:
Vielleicht kann mich mal jemand schlauer machen woran das liegt?!

In PHP können Strings sowohl von normalen Anführungszeichen (") als auch von Hochkommata (', auch genannt Apostroph, einfache Anführungszeichen, single quote, ASCII 39) eingefasst werden. Es gibt jedoch einen grundlegenden funktionalen Unterschied zwischen diesen beiden Zeichen: der Bereich zwischen Anführungszeichen wird von PHP ausgewertet, während alles, was zwischen Hochkommata steht, von PHP schnell übergangen wird.

(Von http://www.php-faq.de/q-stil-anfuehrungszeichen.html)

EDIT: Mist zu lahm^^
 
Hi,

und schonmal danke für die Hinweise.

Komischerweise habe ich nun folgende Konstellation:

Wenn ich mir einfach den Text aus dem Datenbankfeld herauskopiere und statisch in einer Textarea ausgeben lasse, funktioniert das. Sobald ich das Auslesen aber PHP überlasse zeigt er mir alles in einer Zeile mit /r/n an.

Hier mal mein Bsp-Code:
PHP:
echo "<textarea rows=\"12\" cols=\"40\" name=\"texta\">". $daten[text] ."</textarea>";

Wo klemmts denn hier?
 
Ich steig da nicht durch, wieso klappt das wenn ich den Text aus der Datenbank kopiere und einfüge, nicht aber wenn ich das Auslesen von PHP machen lasse? Passiert hier noch eine "Codierung" oder ähnliches?
 
guck dir mal die str_replace funktion an. damit kannst du den String verändern, also die /n in <br> umwandeln, was dann richtig ausgegeben werden sollte.

http://de3.php.net/manual/de/function.str-replace.php

wenns mit regexplaufen soll kannst du auch preg_replace benutzen.

mfg
Rente

Und die BRs werden dann in der textarea angezeigt? - Nein. Also hat das nichts mit dem Problem zu tun. Zum Threadersteller: Du hast das "text" schon in Anführungszeichen, oder?
 
Zurück