Matthias: Zeilenumbrüche in MySQL?

Beitrag lesen

Kommando zurück. Es geht doch nicht.

bei mir ist folgender Sachverhalt gegeben:
$string1 = $array_aus_datenbank_abfrage["name"];

und ein
echo nl2br($string1);

ergibt:

"Text\nMehrText" und nicht:
"Text
Mehr Text"

Hast du da noch eine Idee, woran das liegt?

Ja, "natürlich". ;)

In der Datenbank sind die Zeichen '' und 'n' gespeichert. Das muß beim Reinschreiben passiert sein. Normalerweise ist "\n" nämlich das Zeichen für "Newline", also den Zeilenumbruch.

Du stehst jetzt vor dem Problem, daß die zwei Zeichen '' und 'n' mit nl2br nicht umgesetzt werden. Ist ja klar: Das Newline-Zeichen steht nirgends, also kommt kein "<br>" dazu.

Ich kann da nur sagen: Überarbeite die Daten deiner Datenbank. Ersetze alle ''+'n' durch ein "\n", und es sollte eigentlich funktionieren. Sei gewarnt, daß "\n" in Strings nur funktioniert, wenn du doppelte Anführungszeichen nimmst. Mit einfachen Anführungszeichen klappt es nicht.

Wenn ich nl2br auf einen String anwende klappt alles:
    echo nl2br ("das\n ist ein text");
wird zu:
    das<br /> ist ein text
wird zu:
    das
    ist ein text

Wenn ich nl2br auf eine Variable aus der DB anwende wird nichts umgesetzt.
Wieso erkennt er das nicht als ein Zeichen, wenn es (s. oben) normalerweise doch auch geht?

In der Datenbank: Text \n Text
Im Quelltext: Text \n Text
Angezeigt: Text \n Text

In der Datenbank: Text "\n" Text
Im Quelltext: Text "\n" Text
Angezeigt: Text "\n" Text

In der Datenbank: Text '\n' Text
Im Quelltext: Text '\n' Text
Angezeigt: Text '\n' Text

Warum zeigt sich da keine Regung? Habe ich deine obige Erklärung falsch verstanden?

Wenn ich <br> direkt in die DB schreibe funktioniert das. Kann ich aber nicht nur aus dem von Dir genannten Gründen nicht benutzen, sondern auf Grund von htmlentities.
Das <br> würde zu <br> und somit als <br> im Browser angezeigt werden.

Danke für die Hilfe,
Matthias