problem mit htmlentities

oconner

oconner

Aktives Mitglied
Thread Starter
Dabei seit
11.01.2006
Beiträge
281
Reaktionspunkte
0
Hallo,

wenn ich bei einer Datenbank abfrage kein html ausgeben lassen moechte, dann muss ich doch dies machen oder?

PHP:
$row->text = htmlentities ($row->text);

aber irgendwie geht es nicht :(
 
Die Frage ist ja schon etwas sehr ungenau formuliert.
Vielleicht hilft ja die Beschreibung des statements?
//cut
htmlentities

(PHP 3, PHP 4, PHP 5)

htmlentities -- Wandelt alle geeigneten Zeichen in entsprechende HTML-Codes um
Beschreibung

string htmlentities ( string string [, int quote_style [, string charset]] )

Die Funktion ist komplett identisch zu htmlspecialchars(), allerdings wandelt htmlentities() wirklich alle Zeichen, die eine HTML-Code-Entsprechung haben, in diese Entsprechung um.

Wie bei htmlspecialchars() können Sie mit dem optionalen zweiten Parameter quote_style definieren, wie 'einfache' und "doppelte" Anführungszeichen behandelt werden. Es gibt drei Konstanten, wobei ENT_COMPAT voreingestellt ist:

Tabelle 1. Verfügbare quote_style Konstanten

Konstante Beschreibung
ENT_COMPAT Konvertiert nur doppelte Anführungszeichen und lässt einfache Anführungszeichen unverändert.
ENT_QUOTES Konvertiert sowohl doppelte als auch einfache Anführungszeichen.
ENT_NOQUOTES Lässt doppelte und einfache Anführungszeichen unverändert.
Die Unterstützung für den optionalen Parameter quote wurde in PHP 4.0.3. eingeführt.

Wie bei htmlspecialchars() steht das optionale dritte Argument charset zur Verfügung, das den für die Konvertierung benötigten Zeichensatz definiert. Die Unterstützung für dieses Argument wurden in PHP 4.1.0 eingeführt. Gegenwärtig wird standardmäßig der ISO-8859-1 Zeichensatz verwendet.
//cut again
 
na was muss ich denn da groß beschreiben, ich möchte einfach mit dem oben gegeben code etwas was aus der datenbank gelesen wird und html ist auch als sichtbares html anzeigen lassen, also quais kein html code erlauen.;)
 
und genau das geht mit dem befehl. also gibts kein problem.

im ernst: so kann man dir nur bedingt helfen. vielleicht schreibst du mal, was du schon geprüft hast, wie der input beschaffen ist und was nach der konvertierung mit dem text passiert.
 
also ich hab beides probiert.

1. das der text gleich in htmlentities in die Datenbank geschrieben wird. <<< das ging aber nicht.

2 hab ich probiert das der text bei der ausgabe umgewandelt wird, das ging auch nicht.

EInbauen wuerde ich es lieber da wo man in die Datenbank schreibt. (dies geht mit einem formular)

ein beispiel ->

ais eome Formular wird das per post übertragen

PHP:
$text = $_POST ['text'];

nun möchte ich in dr gleichen datei durch das

PHP:
$text = htmlentities ($text);

jeden html code in die Datenbank schreiben. (so das er nicht ausgegeben werden kann).

Na aber so geht es eben leider nicht :(
 
dann mach doch erstmal eine "leere" php-datei, in der du die funktion generell prüfen kannst:

<?
$text = "<hr>";
echo $text;
$text = htmlentities ($text);
echo $text;
?>

dann aufrufen und den quelltext ansehen. wie sieht das aus?
 
gute idee ;)

na und das geht. einmal wird sie ausgegeben die hr und einmal in html geschrieben also <hr>
 
dann mach das gleiche in deinem skript. füge dort auch print_r ein und danach gleich exit; oder die("Marke 1");
 
Hi,

hatte auch schon mal das Problem, dass er es beim auslesen nicht so wollte:
Beispiel:
PHP:
$test = htmlentities($row->beschreibung);

Das klappte nicht. Was dann aber funktioniert hat war das hier:
Fand ich zwar sehr seltsam, aber na ja

PHP:
$tmpText = $row->beschreibung;
$text       = htmlentities($tmpText);

Probier das mal aus...
Grüße Tiescher
 
Hi,

hab das problem selber nach langem rumprobieren gelöst. Es lag daran das ich per eregi_replace noch andere Wörter umgewandelt habe. Und da haben irgendwie die zusammenhaenge nicht gestimmt.

aber letzendlich siehts ungefair so wie bei dir tiescher aus.

aber danke fuer die hilfen. ;)
 
Zurück
Oben Unten