Wie bekomme ich einen Zeilenumbruch bei Daten aus einer Datenbank?
In der Datenbank steht: "Step 1 - Step 3\nDokumente zur Eingabe".
Im Quelltext wird der Inhalt korrekt ausgelesen und in die Variabe: $text geschrieben.
Um auf der Internetseite angezeigt zu werden habe ich den Quelltext:
<p align="justify"><?php echo nl2br($text) ?></p>
Auf der Internetseite angezeigt wird: "Step 1 - Step 3\nDokumente zur Eingabe".
Eigentlich sollte hier ein Umbruch durchgeführt werden:
Step 1 - Step 3
Dokumente zur Eingabe
Wird aber nicht! Gebe ich den Text direkt ein: $text="Step 1 - Step 3\nDokumente zur Eingabe" (also nicht aus der Datenbank gelesen), funktioniert es.
Wie erreiche ich das auch der Aus der Datenbank übernommene Text mit Zeilenumbruch dargestellt wird?
Würde mich über Hilfe freuen.
4 Antworten
Kann es sein, dass in deiner Datenbank gar kein newline Character steht ("\n"), sondern die beiden Zeichen "\" und "n" hintereinander? Überprüfen kannst du das mit der php Funktion bin2hex(), welche aus einem String einen Hexadezimalstring macht mit den Hex Werten jedes Characters. An der Stelle von "\n" sollte jetzt der Hexwert "0a" stehen. Steht dort allerdings "5c6e", dann handelt es sich um die beiden characters "\" und "n", dann wird php das auch mit der Funktion nl2br nicht ersetzen können.
PS: Nachdem ich diese Antwort geschrieben habe, sehe ich erst, dass regex9 das schon wesentlich kürzer beantwortet hat...
Vermutlich wird der Backslash maskiert. Probiere es so:
echo nl2br(stripcslashes($text));
PS.: Das align-Attribut gehört nicht mehr zum aktuellen Standard. Verwende CSS stattdessen.
<p style="text-align:justify">...</p>
dazu musst du gucken was in der Datenbank steht . ist es UTF-8 musst deine webseite auch UTF-8 sein ggf dann mit regex die sachen ändern .
es gibt \n und \r umbrüche , vorrausgesetzt dein Zeichensatz ist auch überall gleich .
Du kannst die \n nach der Abfrage mit <br/> ersetzen.
Genau das ist ja mein Problem, wie erreiche ich das? Mit nl2br($text) funktioniert es ja nicht, wenn ich aus der Datenbank übernehme was über ein Textarea dort hinein kam.
dann hast du warscheinlich keine \n sondern \r oder du hast ein zeichenkonflict zwischen deinem backend und datenbank zeichensatz . machst du alles über UTF8 ?
Ich bevorzuge mit Slash, da es so auch mit XHTML kompatibel ist.
Super, es funzt :)