Dies scheint ein Betrug zu sein, aber seien Sie versichert, dass dies nicht der Fall ist. Ich habe sowohl SO als auch den Rest des Webs nach einer Antwort auf mein Problem durchsucht und immer wieder dieselben unzureichenden "Lösungen" gefunden. Wie auch immer, hier geht es:
Ich speichere Benutzereingaben aus einem Textbereich in eine MySQL-Datenbank (in einer WordPress-Umgebung, aber das sollte für dieses Problem meiner Meinung nach keine Rolle spielen). Es wird später aus der Datenbank abgerufen und den Administratoren im Backend der Site angezeigt. Das Problem tritt auf, wenn Benutzer Text mit Zeilenumbrüchen senden (dh die Eingabetaste drücken).
Eine Beispielzeichenfolge könnte folgendermaßen aussehen:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
Die Zeichenfolge enthält keine Zeilenendezeichen ("\ n", "\ r" oder ähnliches).
Ich verwende nl2br()
es, um eine HTML-Ausgabe zu generieren, aber das reicht nicht aus. Das Ergebnis ist dann:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Was ist nl2br()
meines Wissens das erwartete Ergebnis, da dadurch die Tags eingefügt werden und die Zeilenumbrüche nicht ersetzt werden sollen?
Das Format, das ich brauche, wäre jedoch folgendes:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Wenn die Zeichenfolge EOL-Zeichen wie "\ n" enthalten würde, würde ich sie entweder mit str_replace()
oder drücken preg_replace()
und damit fertig sein, aber ich habe keine Ahnung, welche Nadel eine dieser Funktionen füttern soll, wenn dort keine Zeichen vorhanden sind an erster Stelle.
Ich kann manuell auf das entsprechende Feld in der Datenbank zugreifen, bei jedem Zeilenumbruch die Rücktaste drücken und was ich später mit der Zeichenfolge tun möchte, funktioniert. Ich weiß also, dass ich das obige Format brauche.