Ralph: sonderzeichen parsen

Hallo,
folgendes Problem:
ich will Usereingaben parsen und folgendes erreichen:

  • alle nicht genehmigten Tags entfernen
  • genehmigte Tags dementsprechend drinlassen
  • Sonderzeichen (alle die uebrigbleiben, ausser den genehmigten Tags) in ihr HTML-Äquivalent umwandeln.

Ich habe eine Funktion, die mir alle nicht genehmigten Tags entfernt, aber verwende ich danach
htmlspecialchars() oder  htmlentities(), dann gehen mir auch alle anderen Tags verloren.

Gibt's da irgendwas?

  1. Hi!

    Ist doch ganz einfach!

    Ersetze erst alle "<" und ">" in den erlaubten Tags durch ein anderes Zeichen oder einen Text z.B. "_k_l_e_i_n_e_r_" und dann wieder zurück.

    fastix

    • alle nicht genehmigten Tags entfernen
    • genehmigte Tags dementsprechend drinlassen

    vgl. strip_tags(), insbesondere den Parameter allowable_tags.

    • Sonderzeichen [...] in ihr HTML-Äquivalent umwandeln.

    Ein Denkanstoß[tm]:

    $table=get_html_translation_table(HTML_ENTITIES);
    unset($table['&'],$table['"'],$table['<'],$table['>']);
    strtr($string,$table);

    Du mußt "nur mehr" das Problem lösten, daß die erwähnten vier Zeichen - in ihrer tatsächlichen Bedeutung vorkommend - natürlich auch nicht ersetzt werden. Das impliziert z.B. Nettigkeiten wie <input ... value="foo <> bar"> etc.