Der Martin: Entities NICHT umwandeln

Beitrag lesen

Hallo,

ich wandle zum Speichern in MySQL alle Sonderzeichen mit htmlspecialchars() um.

das ist eine ganz schlechte Idee. Warum willst du In der DB speziell für den HTML-Kontext aufbereitete Inhalte ablegen? Der Einsatz von htmlspecialchars() wäre eigentlich beim Auslesen angebracht, genauer gesagt, in dem Moment, wo du die Daten für HTML aufbereites.

Nun suche ich aber in den Eingabedaten auch nach Links und schreibe die HTML-Entsprechung „<a href=\"...\">“ Slash-geschützt, also nicht in Entities in die Datenbank.

Hä?

Ihr merkt sicher wo ich hin will, die von mir selbst erzeugten Link-Formatierungen sollen dabei nicht betroffen sein.

Nein, ich versteh's nicht so ganz.

Wie kann ich nun die Daten exakt so an den Browser ausgeben, wie diese in der Datenbank gespeichert sind (also ohne Umwandlung der Entities)?
Ich steh gerade irgenwie auf dem Schlauch!

Der erste Schritt sollte sein, die Umwandlung mit htmlspecialchars() beim Eintragen in die DB wegzulassen. Speichere die Daten kontextneutral. Lediglich die notwendige Maskierung für die mySQL-Textschnittstelle mit mysql_real_escape_string() ist angeraten - aber die ist ja gerade darauf ausgelegt, dass die Nutzdaten *nicht* verändert werden.
So kannst du auch mühelos in der DB suchen oder andere Operationen und Verknüpfungen mit deinen Daten anstellen.

Der zweite Schritt muss sein, die aus der DB gelesenen Daten beim Ausgeben als HTML (und erst dann!) mit htmlspecialchars() zu maskieren, wenn HTML-Sonderzeichen "wörtlich" wiedergegeben und nicht interpretiert werden sollen.

So long,
 Martin

--
Er:  Mit wem warst du gestern abend aus?
Sie: Du bist mal wieder eifersüchtig wie immer!
Er:  Wer ist Immer?
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(