Carsten: Funktion zum Austausch benannter Zeichen

Guten Tag Selfer,
wir müssen Texte zur Ausgabe ín HTML formatieren, so dass alle Tags erhalten bleiben, aber die HTML-Sonderzeichen ersetzt werden.

Ich habe bereits in allen mir bekannten Quellen nach einer fertigen Funktion gesucht, und auch selbst versucht eine solche zu schreiben.
Leider hakt es an folgenden Problemen:

1. Anführungszeichen in Tags dürfen nicht getauscht werden,
     im Text schon

2. < und > nur ersetzten, wenn sie kein Tag einleiten,
     bzw. beenden

3. bereits getauschte nicht nochmals ersetzten,
     z.B. & nicht &amp;

Wer kann mir da helfen?
Ich brauche jede Idee :-)

Viele Grüße
Carsten

  1. 1. Anführungszeichen in Tags dürfen nicht getauscht werden,
         im Text schon

    Da wäre schon mal die Frage, ob auch die Validität des HTML mitgeprüft wird.
    Was machst Du ansonsten mit
     <input type="hidden" name="foo" value="Ich sage "Hallo"."> ?

    2. < und > nur ersetzten, wenn sie kein Tag einleiten,
         bzw. beenden

    Ist "Tag" definiert als "valides HTML-Tag"? Das wäre auch wieder knifflig, weil ja

    Sei b<a gegeben. Dann b positiv => a positiv.

    so ohne weiteres nicht von einem <a>-Tag zu unterscheiden ist, außer durch exzessives Sytax-parsing.

    3. bereits getauschte nicht nochmals ersetzten,
         z.B. & nicht &amp;

    Das sollte mit einer RegExp gehen.