Zeilenumbruch aus textarea nicht mit in DB schreiben

Alphawolf

Grünschnabel
Hallo allerseits,
im Titel ist eigentlich schon die Hauptaussage getroffen.
Ich lasse den Benutzer u.a. in einer Textarea mittels Formular Daten in eine DB schreiben, die dann wiederum auf ein Bild geschrieben werden. Jedoch wird ein Zeilenumbruch auf dem Bild seltsam dargestellt. (siehe hier; nach test1 kommt ein Enter aus der Textarea).

Nun will ich aber nicht, dass das so angezeigt wird, sondern dass der Umbruch, der von Benutzer eingegeben wurde als Leerzeichen in die DB geschrieben wird.
Bisher habe ich es mit Folgendem versucht bevor es in die DB geschrieben wird:
PHP:
$message = nl2br($_POST['message']);
$message = ereg_replace("<br />", " ", $message);
Wenn ich das in HTML ausgeben lasse aus der DB, wird der Umbruch nicht geparsed und es wird nacheinander ausgegeben, nur im Bild erscheint eben dieses kryptische Zeichen. :(

Was kann man tun?

Danke,
Oli

P.S: Vielleicht noch als Info: Zeichencode der Seite ist charset=ISO-8859-1.
 
Zuletzt bearbeitet:
Der Zeilenumbruch, der aus der Textarea kommt wird durch \n dargestellt.
Du musst also so ersetzen:
PHP:
$message = str_replace("\n", " ", $message);
Da ein Zeilenumbruch auch als \r\n bzw. \r ankommen kann, solltest Du aber so ersetzen:
PHP:
$message = str_replace("\r\n", "\n", $message);
$message = str_replace("\r", "\n", $message);
$message = str_replace("\n", " ", $message);
Im Browser siehst den Zeilenumbruch nicht, weil diese laut Standard ignoriert bzw. als Leerzeichen interpretiert werden. Im Quelltext der Seite wird jedoch ein Zeilenumbruch zu sehen sein.
Wenn Du Dein Bild beliebig hoch machen kannst, könntest Du den String auch mit [phpf]explode[/phpf] in mehrere Zeilen teilen und diese einzeln auf dem Bild ausgeben.
Um für die Zukunft flexibel zu bleiben, würde ich vor dem Eintragen nur so ersetzen:
PHP:
$message = str_replace("\r\n", "\n", $message);
$message = str_replace("\r", "\n", $message);
Beim Auslesen kannst Du je nach Anforderung dann immer noch den Zeilenumbruch entfernen oder anderweitig formatieren.

Gruß hpvw
 

Neue Beiträge

Zurück