Htmlentities mit nl2br und datenbanktext ausgabe

11/30/2012 13:41 Hiris#1
Hey, hab 2 Probleme die ich noch nie im Leben hatte und bin wirklich ratlos da es eigentlich immer funktioniert hat:

Habe einen text, wenn ich ihn jetzt stinknormal in Html einfüge geht er normal in die box und wenn er an den Rand kommt gehts in die nächste zeile, wenn ich genau den gleichen text aber aus der Datenbank hole und mit echo ausgebe ist alles in einer Zeile und zieht sich über die ganze seite.

Desweitere funktioniert nl2br nicht mehr wenn htmlentities vorher gemacht wurde, habe da schon nach gegoogelt aber überall nur gefunden nl2br(htmlentities($text)) funktioniert...
11/30/2012 14:36 Mikesch01#2
Also, wenn du einen Text mit einer Textbox in die Datenbank einspeicherst, benutzt du ja bereits vor der Abspeicherung htmlentities() zur Maskierung (normalerweise).

Nun kannst du den maskierten Text bei der Ausgabe wieder demaskieren:

PHP Code:
$text html_entity_decode($db_row->text);
$text nl2br($text); 
Somit kannst du deinen Text normal ausgeben.
11/30/2012 15:39 Hiris#3
Kk, danke schonmal, das größere Problem ist jetzt aber noch das Sachen die aus der Datenbank geholt sind das Grid System der Website ignorieren, hat da jemand eine idee?

Hat sich erledigt, Wort war zu lang^^
12/02/2012 03:12 Hiris#4
Quote:
Originally Posted by Mikesch01 View Post
Also, wenn du einen Text mit einer Textbox in die Datenbank einspeicherst, benutzt du ja bereits vor der Abspeicherung htmlentities() zur Maskierung (normalerweise).

Nun kannst du den maskierten Text bei der Ausgabe wieder demaskieren:

PHP Code:
$text html_entity_decode($db_row->text);
$text nl2br($text); 
Somit kannst du deinen Text normal ausgeben.
Ich versteh nicht ganz was es dann bringen soll wenn man es wieder decodiert, ich will dich das die html tags weiterhin escaped sind, ansonsten kann man sichs doch gleich spaaren?

Ich will im Prinzip das alle Html und Javascript befehle escaped sind und Nl2Br trotzdem genutzt werden kann und die Umlaute vernünftig dargestellt werden
12/02/2012 11:25 Synatex#5
Dann Escape die HTML Tags einfach, speicher es doch in die Datenbank?

PHP Code:
<?php

// Eingabe
$text strip_tags($text);

// $text in DB Eintragen
?>
Ausgabe:

PHP Code:
<?php

$text 
nl2br($dbtext);

?>

und für dein Problem mit dem Text übern Rand rausgehen: Definierst du denn auch irgendeinen Tag (beispielsweise Span oder p) um den Text zu formatieren? Andernfalls wäre es klar, wenn kein HTML Tag vorhanden ist, das der Browser das Box-Modell nicht richtig rendern kann.