real_escape_string(), nl2br() und htmlentities()

Hallo,

ich habe noch eine (letzte) Frage. Ich schreibe den Inhalt einer Textarea in eine Datenbank und benutze daher real_escape_string, um Steuerungszeichen auszufiltern. Gleichzeitig möchte ich auch den HTML Code ausfiltern, anscheinend ist hier htmlentities() die Funktion der Wahl. Leerzeichen und Zeilenumbrüche sollen allerdings in HTML Code umgewandelt werden, damit die spätere Ausgabe des Textes ansehnlich ist. Momentan benutze ich diese drei Funktionen in folgender Reihenfolge:

// Eingabeseitig
1.) real_escape_string();
2.) htmlentities();

// Ausgabeseitig
1.) nl2br();

Ich glaube, die Reihenfolge ist soweit in Ordnung! Allerdings werden mehrfache Leerzeichen in einfache Leerzeichen umgewandelt. Lässt sich das noch ändern? Eventuelle will ein Benutzer - warum auch immer - mehrfache Leerzeichen verwenden.

Vielen Dank für die Hilfe!

Hi,

Gleichzeitig möchte ich auch den HTML Code ausfiltern,
anscheinend ist hier htmlentities() die Funktion der Wahl.

das ist nicht besonders sinnvoll. Du solltest jeden Filter nur im entsprechenden Kontext anwenden, also htmlentities() oder besser htmlspecialchars(), wenn Deine Zeichenkodierung stimmt, erst in der Ausgabe.

werden mehrfache Leerzeichen in einfache Leerzeichen
umgewandelt. Lässt sich das noch ändern?

Du kannst Dir für die Ausgabe eine Funktion programmieren, die z.B. jedes zweite folgende Leerzeichen in   umwandelt (und htmlspecialchars() filtert).

Gruß
Ingo

Hi,

z.B. jedes zweite folgende Leerzeichen in   umwandelt

wie ich sehe, ist die Ausgaberoutine hier leider nicht optimal und hat hier die Entity „& nbsp ;“ (von mir ohne Leeerzeichen eingegeben) nicht maskiert.

Gruß
Ingo

„…also htmlentities() oder besser htmlspecialchars(), wenn Deine Zeichenkodierung stimmt, erst in der Ausgabe.“

Verstehe, von dieser Seite habe ich das noch gar nicht gesehen. Muss ich gleich ausprobieren. Die Sache mit den mehrfachen Leerzeichen lasse ich vorerst, ist ohnehin nicht so wichtig. Vielen Dank!