T!M: HTML code auf einer HTML Seite anzeigen

Hallo,

Ich möchte etwas relativ simples machen und zwar html-code auf einer html-Seite anzeigen. Mit der Suche habe ich leider nicht gefunden...

Wenn ich aber zum beispiel sowas schreibe:

<html>
<head>
</head>
<body>

<html>
 <head>
  <title>HTML-Version</title>
 </head>
 <body>
  <a href="">
 </body>
</html>

</body>
</html>

wird nicht angezeigt, was ja durchaus verständlich ist...
Kann ich das irgendwie in ein div oder so packen oder anders einen code-Bereich defineiren? Hier im Forum geht's ja auch ;)

Danke Tim

  1. <pre> </pre>

    1. <pre> </pre>

      kurz und knackig, aber das geht nicht!
      im selfHTML hab ich folgendes gefunden:

      HTML-Elemente innerhalb von <pre> und </pre> werden interpretiert.

      trotzdem Danke

      1. kurz und knackig

        Hallo, ;)

        HTML-Elemente innerhalb von <pre> und </pre> werden interpretiert.

        Oh, ich dachte, das ginge. Da hilft es nichts als statt "<" "<" und > ">" zu schreiben...

        Gruß Tini

        1. Hi T!M,

          jetzt geb ich meinen Senf auch noch dazu:

          Schreib deine HTML-Seite ganz normal in eine Datei.

          Dann lad die Datei mit

          $fp= fopen("datei","r");
          $DateiInhalt = fread($fp,filesize("datei"));
          fclose($fp);

          $DateiInhalt = htmlspecialchars($DateiInhalt);
          echo $DateiInhalt;

          und gut ist's

          Viel Erfolg
          Liebe Grüße aus Senfstadt, äh http://www.braunschweig.de

          Tom

          1. Hi Tom

            jetzt geb ich meinen Senf auch noch dazu:

            tu das, ich werde es auch machen. *forumzusenf*

            Schreib deine HTML-Seite ganz normal in eine Datei.
            Dann lad die Datei mit

            $fp= fopen("datei","r");
            $DateiInhalt = fread($fp,filesize("datei"));
            fclose($fp);

            $DateiInhalt = htmlspecialchars($DateiInhalt);
            echo $DateiInhalt;

            och nö... das haben wir doch gestern erst hier durchgekaut.
            man muss

            $daten = file("datei");
            $ganzesfile = implode($daten);
            $ganzesfile = htmlspecialchars($ganzesfile);
            echo $ganzesfile;

            das so machen. ausserdem spart man 'ne zeile. (;D)

            und gut ist's

            nicht ganz. bleibt die überaus philosofische frage, was denn nun schneller ist >;)

            Fabian
            [senf]

            1. Hallo Fabi,

              jetzt geb ich meinen Senf auch noch dazu:

              tu das, ich werde es auch machen. *forumzusenf*

              ich hab noch etwas Ketchup...

              Schreib deine HTML-Seite ganz normal in eine Datei.
              Dann lad die Datei mit

              fread liest die Datei binär ein, das heißt blockoreintiert und nicht Zeilenweise. Ein Blocktreiber ist sehr nah an der Hardware und daher sehr schnell.

              $fp= fopen("datei","r");
              $DateiInhalt = fread($fp,filesize("datei"));
              fclose($fp);

              $DateiInhalt = htmlspecialchars($DateiInhalt);
              echo $DateiInhalt;

              och nö... das haben wir doch gestern erst hier durchgekaut.
              man muss

              file() liest die Datei textorientiert ein, das heißt, innerhalb eines Blocktreibers (der immer benötigt wird) läuft ein zweiter "Blockprozess" für jede Zeile ab. Die Datei wird vom Treiber also gelesen und ausgewertet, um die Zeilenendezeichen zu finden. Eine solche Stringvergleichsoperation kostet sehr viel Zeit.

              Mit File wird die Datei zeilenweise in ein Array eingelesen. Jede Zeile der Datei (abgeschlossen durch ein [CR]LF) wird in ein eigenes Array-Element geschrieben.

              $daten = file("datei");
              $ganzesfile = implode($daten);
              $ganzesfile = htmlspecialchars($ganzesfile);
              echo $ganzesfile;

              Ich halte es nicht für sinnvoll, die Datei erst in Zeilen zu zerlegen, um sie dann anschließend mit implode() wieder zusammenzusetzen. Dann kann man sie doch gleich am Stück verarbeiten, gelle?

              das so machen. ausserdem spart man 'ne zeile. (;D)

              nicht ganz. bleibt die überaus philosofische frage, was denn nun schneller ist >;)

              Na, meine Version natürlich. Ich würde mal schätzen, dass die weniger als halbsolange braucht. Die meiste Zeit brauchen sowieso die Stringoperationen von htmlspecialchars(): Für jede auszutauschende Zeichengruppe ein Durchlauf Suchen, Datei umkopieren um Platz fürs Einfügen zu schaffen, Einfügen, nächstes Zeichen.

              Könnte auch so ablaufen, dass die Datei einmal umkopiert wird und währenddessen alle zu tauschenden Zeichenketten gescuht werden. Immer, wenn eine auftaucht, wird si erkannt und ausgetasucht. Dann muss man aber die Zeichen der Datei mit einem Set (Menge von Zeichen) vergelichen, und das kostet auch Takte und damit Zeit. Dafür könnte man nun Schicht für Schicht (im Sprachmodell) eine Übertragungsfunktion aufstellen und das ganze berechenbar machen.

              Das lohnt sich aber nur bei sehr großen Dateien, da bei kleinen die Zugriffszeit des Dateisystems (Festplatte 5 bis 12ms, je nach Qualität) für den Erstzugriff auf die Datei überwiegt. Die Abarbeitung bewegt sich stattdessen im Nanosekundenbereiceh.

              So, das war ne ganze Flasche...

              Fabian
              [senf]

              Tom
              [Ketchup]

              1. Hallo Fabi,

                Nabend Tom,
                bin schon froh, dass ich noch zum antworten komme, hatte heute nen ganzen Computer zu formatieren und neu aufzuspielen. (Das Problem war, dass das mein DSL-Server war ;-))

                jetzt geb ich meinen Senf auch noch dazu:

                tu das, ich werde es auch machen. *forumzusenf*

                ich hab noch etwas Ketchup...

                ah ja...
                use Mayo(active);

                fread liest die Datei binär ein, das heißt blockoreintiert und nicht Zeilenweise. Ein Blocktreiber ist sehr nah an der Hardware und daher sehr schnell.

                $fp= fopen("datei","r");
                $DateiInhalt = fread($fp,filesize("datei"));
                fclose($fp);

                $DateiInhalt = htmlspecialchars($DateiInhalt);
                echo $DateiInhalt;

                och nö... das haben wir doch gestern erst hier durchgekaut.
                man muss

                file() liest die Datei textorientiert ein, das heißt, innerhalb eines Blocktreibers (der immer benötigt wird) läuft ein zweiter "Blockprozess" für jede Zeile ab. Die Datei wird vom Treiber also gelesen und ausgewertet, um die Zeilenendezeichen zu finden. Eine solche Stringvergleichsoperation kostet sehr viel Zeit.

                Mit File wird die Datei zeilenweise in ein Array eingelesen. Jede Zeile der Datei (abgeschlossen durch ein [CR]LF) wird in ein eigenes Array-Element geschrieben.

                $daten = file("datei");

                $ganzesfile = implode('',$daten); // Zeile geändert, ich hatte es tatsächlich übersehen.

                $ganzesfile = htmlspecialchars($ganzesfile);
                echo $ganzesfile;

                Ich halte es nicht für sinnvoll, die Datei erst in Zeilen zu zerlegen, um sie dann anschließend mit implode() wieder zusammenzusetzen. Dann kann man sie doch gleich am Stück verarbeiten, gelle?

                ja. aber wart mal ab, was ich weiter unten meine... =)

                nicht ganz. bleibt die überaus philosofische frage, was denn nun schneller ist >;)

                Na, meine Version natürlich. Ich würde mal schätzen, dass die weniger als halbsolange braucht. Die meiste Zeit brauchen sowieso die Stringoperationen von htmlspecialchars(): Für jede auszutauschende Zeichengruppe ein Durchlauf Suchen, Datei umkopieren um Platz fürs Einfügen zu schaffen, Einfügen, nächstes Zeichen.

                mhh, muss denn die Variable, die zwar byteorientiert eingelesen wird, was schneller ist, nun in (Ascii-)Text umgewandelt werden? Wenn ja, so wäre die Performance wieder ausgeglichen, mit dem geringen Vorsprung des array-implodens.

                Könnte auch so ablaufen, dass die Datei einmal umkopiert wird und währenddessen alle zu tauschenden Zeichenketten gescuht werden. Immer, wenn eine auftaucht, wird si erkannt und ausgetasucht. Dann muss man aber die Zeichen der Datei mit einem Set (Menge von Zeichen) vergelichen, und das kostet auch Takte und damit Zeit. Dafür könnte man nun Schicht für Schicht (im Sprachmodell) eine Übertragungsfunktion aufstellen und das ganze berechenbar machen.

                da fällt mir ein, wenn man htmlspecialchars() auf den array anwendet _könnte_ das schneller gehen, weil ja die zu kopierenden blöcke(sprich zeilen) wesentlich kleiner sind. das is'n versuch wert.

                Das lohnt sich aber nur bei sehr großen Dateien, da bei kleinen die Zugriffszeit des Dateisystems (Festplatte 5 bis 12ms, je nach Qualität) für den Erstzugriff auf die Datei überwiegt. Die Abarbeitung bewegt sich stattdessen im Nanosekundenbereiceh.

                zustimmung hierbei. wenn ich ne 12ms-platte hab isses wurscht, wie ich es mache ;-)

                So, das war ne ganze Flasche...

                sieh zu, dass du das Forum auch wieder sauber machst...

                Fabian
                [mayo]

            2. Hallo Fabi,

              habe gerade noch einen (formalen) Fehler entdeckt. Mein Ketchup steht im anderen Posting.

              jetzt geb ich meinen Senf auch noch dazu:

              tu das, ich werde es auch machen. *forumzusenf*

              Schreib deine HTML-Seite ganz normal in eine Datei.
              Dann lad die Datei mit

              $fp= fopen("datei","r");
              $DateiInhalt = fread($fp,filesize("datei"));
              fclose($fp);

              $DateiInhalt = htmlspecialchars($DateiInhalt);
              echo $DateiInhalt;

              och nö... das haben wir doch gestern erst hier durchgekaut.
              man muss

              $daten = file("datei");
              $ganzesfile = implode($daten);

              müsste heißen: $ganzesfile = imlpode("",$daten);
              ob der Seperator optional ist, schau ich aber nochmal nach.

              aus der PHP-Doku: $file_text = implode('',file("data.htm"));
              http://www.php.net/manual/de/function.implode.php

              Demnach würde Deine Version nicht funktionieren...

              $ganzesfile = htmlspecialchars($ganzesfile);
              echo $ganzesfile;

              das so machen. ausserdem spart man 'ne zeile. (;D)

              und gut ist's

              nicht ganz. bleibt die überaus philosofische frage, was denn nun schneller ist >;)

              Fabian
              [senf]

              Tom

      2. <pre> </pre>

        kurz und knackig, aber das geht nicht!
        im selfHTML hab ich folgendes gefunden:

        HTML-Elemente innerhalb von <pre> und </pre> werden interpretiert.

        trotzdem Danke

        Hallo,

        ein readonly-textarea würde gehen:
        <textarea readonly cols="50" rows="10">
          <h1>Text</h1>
          <a>Text</a>
        </textarea>

        oder das "umschreiben" der Steuerzeichen:
        <pre>
          <h1>Text</h1>
          <a>Text</a>
        </pre>

        Gruß

        Axel

  2. Hab raus,

    man kann <html> einfach als sonderzeichen <html> schreiben und fertig!
    Sieht man gut wenn man sich den Quelltext von meinem ersten Post in diesem Thread ansieht...

    Tim

  3. Hallo,

    Ich möchte etwas relativ simples machen und zwar html-code auf einer html-Seite anzeigen. Mit der Suche habe ich leider nicht gefunden...

    Wenn ich aber zum beispiel sowas schreibe:

    <html>
    <head>
    </head>
    <body>

    <html>
    <head>
      <title>HTML-Version</title>
    </head>
    <body>
      <a href="">
    </body>
    </html>

    </body>
    </html>

    wird nicht angezeigt, was ja durchaus verständlich ist...
    Kann ich das irgendwie in ein div oder so packen oder anders einen code-Bereich defineiren? Hier im Forum geht's ja auch ;)

    Eben. Guck Dir doch Deinen Quelltext mal an.
     < &lt
     > &gt

    Danke Tim