nl2br() soll nicht bei HTML-Tags angewendet werden

lolilol

Mitglied
Hallo,

ich habe eine Webform erstellt, die in einer MySQL-Datenbank Seiteninhalte abspeichert.

Dabei ist es möglich HTML und plainText zu verwenden. Der Inhalt des Datenbankfeldes wird zum anzeigen ausgelesen und mit nl2br($inhalt) ausgegeben.

Mein Problem hierbei ist, dass nl2br() natürlich die Zeilenumbrüche ("\n") nicht nur für plainText-Zeilen in HTML-Zeilenumbrüche ("<br />") umwandelt, sondern auch für Zeilen, die reine HTML-Tags entahlten.

Bsp:
Der Ursprungstext
Code:
Hallo Welt!
Bist du da?
<table>
 <tr>
  <td>Hallo alle anderen!</td>
 </tr>
</table>
Ende.
wird hierbei in
Code:
Hallo Welt!<br />
Bist du da?<br />
<table><br />
 <tr><br />
  <td>Hallo alle anderen!</td><br />
 </tr><br />
</table><br />
umgwandelt.

Dies führ natürlich zu einer viel zu weit auseinandergezogenen Darstellung.

Hat jemand eine Idee, wie man dieses Problem lösen könnte? phpBB-Foren (und wahrscheinlich auch dieses) haben dieses Problem ja nicht. Wie fügen die die Zeilenumbrüche ein? per RegEx ohne "s" Identifier?

Gruß
loli
 
Ja, habe ich mir auch überlegt, aber ich hatte gehoft, dass es eine möglichkeit gibt, die weniger Performance schluckt :|

Die Texte können über mehrere Seiten gehen.

Greez
loli

[EDIT]
Außerdem werden dann auch Zeilen nicht umgebrochen, wenn plainText und HTML zusammen benützt werden e.g. "Hallo Welt<table>" ....

Das wäre dann nur mit RegEx zu lösen und das verlangsamt mir die Seite doch zu stark :(
[/EDIT]
 
Naja...mit RegExp ginge es so:
Code:
$text=preg_replace('/([^>])[\s]+$/m', '\\1<br />', $text);

Zur Performance kann ich keine sachdienlichen Hinweise geben.... ich glaub aber nicht, dass du bei soetwas überhaupt ohne RegExp auskommst(du wirst da ja sicher noch mehr tun als Zeilen umbrechen)
 
oO Perfomance? Na egal lassen wir das.

Öhm ich stell mir hier mal die komische Frage wieso jemand ne HTML-Table verwendet aber kein <br> kennt? Bzw. halt <br/>?
 
Es gibt bereits weitaus bessere Funktionen, die nicht nur Steuerzeichen in erzwungene Zeilenumbrüche umformen, sondern auch welche, die den Text durch aufeinanderfolgende Steuerzeichen in Absätze gliedert. So z. B. die autop-Funktion von Matthew Mullenweg.
 
Er meint damit, dass wieso du Zeilenumbrüch ber nl2br umwandelst, wenn der Autor des in das Formular geschriebenen Textes html-Code kennt. Und womit er recht hat. Weil wer ein table Tag kennt, kennt auch br's... :rolleyes:
 
Ok, das habe ich jetzt verstanden, aber das ganze ist eine art abgespecktes CMS-System für die Seite des Instituts für Biometrie und Informatik der Uni-Klinik Freiburg (PS: nicht meine Seite! Die alte!) und einige der Dipl.Statistiker dort können kaum HTML... es gibt also die Möglichkeit HTMl zu verwenden, aber es sit nicht zwingend (und für die, die keines mögen, gibt es immer noch die Java-Script-Includes wie hier im Forum = HTML für Links und so). Also schon berechtigt, denke ich und ich will sie auch nicht überfordern, indem sie extra ein Häckchen machen müssen, um HTML zu verwenden :P

Greez
loli
 
Zurück