HTML ausschalten und trotzdem <br> einsetzen

LordoftheBord

Mitglied
Hallo

Ich bin gerade dabi ein GB zu schreiben. Und da ein Benutzer, wenn er ein bissel HTML in seinen Beitrag schreiben würde, die ganze Seite praktisch "zerstören" könnte, will ich HTML ausschalten. Also hab ich folgendes gemacht:

Code:
$datensatz[$i]["text"] = str_replace ("<","$lt",$datensatz[$i]["text"]);
$datensatz[$i]["text"] = str_replace (">","$gt",$datensatz[$i]["text"]);

Das funktioniert auch. Doch will ich auch Zeilenumbrüche realisieren. Also hab ich folgendes geschrieben:

$datensatz[$i]["text"] = str_replace ("\n","<br>",$datensatz[$i]["text"]);

Tja, aber das funktioniert nicht. Ist ja auch ganz logisch, da ich ja HTML ausgeschaltet hab und somit nicht das "<br>" hingeschrieben wird, sondern das "br". Weiß jemand wie ich das Problem lösen könnte?

mfg
LotB
 
mach deine html "abschaltung" so:
$text = htmlspecialchars($text);

wenn nun jemand einen html code postet, wird dieser nicht ausgewertet, sondern lediglich angezeigt.
 
Ja, danke ok. Das geht so auch. Aber das löst immer noch nicht mein Problem mit dem Zeilenumbruch. Jetzt wird halt <br> hingeschrieben, aber nicht interpretiert.

Kennt dafür jemand ne Lösung?

mfg
Jan
 
Also wenn jemand in dein gb schreibt, dann schreibt der doch mit sicherheit für einen zeilenumbruch nicht extra <br>, sondern haut einfach auf die enter taste. damit das interpretiert wird, kannste

$text=nl2br($text);

benutzten. Also es gibt kein Grund <br> zu schreiben.
 
jo, genau. du machst erst htmlspecial chars und dann das mit den Brs. dafür gibs übrigends auch ne php function. nl2br oda so, guck mal ins manual....

EDIT: argh, blubber wa schneller... aba diese funtkion da schreibt auch <br>. bzw. <br /> wie es in xhtml üblich is wenn ich mich net irre... aufjedenfall muss es NACH htmlspecialchars ausgeführt werden da sonst die brs wieder rückgängi9g gemacht werden...
 
Zuletzt bearbeitet:
was denn?
er will
1. dass niemand durch html code sein gb zerfetzt
-> htmlspecialchars
2. dass bei einem enter zeilenumbrüche erscheinen
-> nl2br

und jetzt?
 
Original geschrieben von blubber
Also wenn jemand in dein gb schreibt, dann schreibt der doch mit sicherheit für einen zeilenumbruch nicht extra <br>, sondern haut einfach auf die enter taste. damit das interpretiert wird, kannste

$text=nl2br($text);

benutzten. Also es gibt kein Grund <br> zu schreiben.

und wenn du ganz oben liest, siehst du das hier:

Original geschrieben von LordoftheBord
Das funktioniert auch. Doch will ich auch Zeilenumbrüche realisieren. Also hab ich folgendes geschrieben:

$datensatz[$i]["text"] = str_replace ("\n","<br>",$datensatz[$i]["text"]);
naja, lass uns nicht streiten :)
 
Zurück