Wenn real_escape_string drauf angewendet wird, sieht es so aus:
EINS<br>
\r\n<br><br>
...
Und wenn htmlentities und nl2br drauf angewendet wird sieht es so aus:
EINS<br><br />\r\n<br><br><br />\r\nDREI<br />\r\n
...
Jetzt frage ich mich:
- Wieso werden nicht alle Zeichen umgewandelt? zb. <br /> bleibt <br /> anstatt umgewandelt zu werden.
Das ist einfach: Du wendest erst real_escape_string() an. Dann htmlentities(). Hierbei werden die <br> umgewandelt. Das findest Du auch in der Ausgabe: <br>. Doch dann kommt nl2br und fügt neue Umbrüche ein. Du hast nichts falsch gemacht.
- Die Sachen die encodet wurden zb. </div> sind doch richtig encodet, sie müssten mir doch im Forum als <div> angezeigt werden, oder?
Nur wenn die Anzeige als HTML (und also nicht als HTML-Quell-Text) erfolgt erfolgt und nur wenn der String nicht nochmals durch htmlspecialchars gejagt wird. Du hast den Text sozusagen falsch betrachtet, aber das liegt außerhalb der für uns sichtbaren Programmteile.