M.i.k.e: HTML-Quelltext unverändert in textarea anzeigen

Moin zusammen!

Mit einem PHP-Script lese ich eine HTML-Datei aus, extrahiere aus derselben einen bestimmten Abschnitt und entferne alles HTML (striptags). Falls Text übrig bleibt, lasse ich diesen in einer textarea anzeigen, wo er verändert werden kann.

Der Inhalt der textarea wird dann wiederum an ein PHP-Script übergeben, das daraus wieder die urspüngliche HTML-Struktur herstellt und als Datei speichert.

Der Text in der ursprünglichen HTML-Datei kann (nun) codierte Zeichen enthalten. Das sind sowohl besondere Schriftzeichen (bspw. der Form Ä), aber auch Zeichenfolgen, die zur Darstellung nicht-latenischer Schriftzeichen verwendet werden.

Die textarea zeigt solchen Text nicht codiert an, d.h. ein Zeichenwust in HTML ist dann ein Schriftzeichen in der textarea (wie bei Anzeige der HTML-Datei im Browser). Beim Abspeichern solcher Übergaben an das letztgenannte Script gehen die ursprünglichen Zeichen verloren. Sollen sie aber nicht.

Frage:

Wie kann ich so codierten Text in der textarea uninterpretiert anzeigen lassen?

Beste Wünsche,

Mike

  1. Hallo,

    Der Text in der ursprünglichen HTML-Datei kann (nun) codierte Zeichen enthalten. Das sind sowohl besondere Schriftzeichen (bspw. der Form Ä),

    aber auch Zeichenfolgen, die zur Darstellung nicht-latenischer Schriftzeichen verwendet werden.

    Beispiel? Darunter kann ich mir nichts vorstellen, jedenfalls nichts, was nicht mit der Entity-Notation (ä bzw.: €) identisch wäre.

    Die textarea zeigt solchen Text nicht codiert an, d.h. ein Zeichenwust in HTML ist dann ein Schriftzeichen in der textarea (wie bei Anzeige der HTML-Datei im Browser).

    Ja, weil der Inhalt des TEXTAREA-Elements #PCDATA ist. PCDATA steht für _parsed_ character data.

    Beim Abspeichern solcher Übergaben an das letztgenannte Script gehen die ursprünglichen Zeichen verloren. Sollen sie aber nicht.

    Wandle sie zurück. In PHP existiert dafür htmlentities. Bitte auch die Nutzerkommentare lesen.

    Frage:

    Wie kann ich so codierten Text in der textarea uninterpretiert anzeigen lassen?

    Das ginge auch. Das PHP darf eben nicht

    <textarea name="Ta0" cols="50" rows="3">Das ist ein Test mit &auml; &ouml; &uuml; &Auml; &Ouml; &Uuml; &#x20ac;</textarea>

    ausgeben, sondern müsste

    <textarea name="Ta2" cols="50" rows="3">Das ist ein Test mit &amp;auml; &amp;ouml; &amp;uuml; &amp;Auml; &amp;Ouml; &amp;Uuml; &amp;#x20ac;</textarea>

    ausgeben. Auch das wäre mit htmlentities oder mit htmlspecialchars lösbar.

    Da handelst du Dir aber neue Probleme ein. Was, wenn der Nutzer die Zeichenfolge &#x20ac; in der Textarea zerstört? Besser ist, Du lässt die Zeichen ä ö ü Ä Ö Ü € in der Textarea stehen und wandelst Sie nach der Übergabe mit PHP wieder in Entities zurück.

    viele Grüße

    Axel

    1. Hi Axel,

      Der Text in der ursprünglichen HTML-Datei kann (nun) codierte Zeichen enthalten. Das sind sowohl besondere Schriftzeichen (bspw. der Form &Auml;),

      aber auch Zeichenfolgen, die zur Darstellung nicht-latenischer Schriftzeichen verwendet werden.

      Beispiel? Darunter kann ich mir nichts vorstellen, jedenfalls nichts, was nicht mit der Entity-Notation (&auml; bzw.: &#x20ac;) identisch wäre.

      siehe bspw.:

      ÁùÕ£¨£µ£°£©

      Das ist Chinesisch, charset=gb2312, gibt's aber auch noch für andere Sprache und auch für gleiche Sprache diverse charsets...

      Allerdings muss ich mir das alles nochmal genauer ansehen, evtl. kann man damit dem charset was machen, ich glaube, die Probleme sind bei mir erst durch die Maskierung von $Auml; & Co. entstanden, also dass ein Ä in solchen Zeichensätzen halt kein Ä sein soll, und es, wird es maskiert, zu Fehlern kommt..

      Die Textarea kann ja offenbar nicht eingestellt werden, Quelltext uninterpretiert darzustellen.. Na ja, die Frage war es wert, danke für Deine Zeit und

      schönen Gruß,

      Mike