Mastershrimp: Quelltext einer Datei in eine Textarea einfügen

Hallo!

Ich würde gerne ein PHP-Script schreiben, das in eine Textarea den Quellcode einer anderen Datei einfügt.

Mein Versuch war:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<META NAME="Generator" CONTENT="TextPad 4.6">
<META NAME="Author" CONTENT="?">
<META NAME="Keywords" CONTENT="?">
<META NAME="Description" CONTENT="?">
</HEAD>

<BODY>
<textarea>
<?php
  if(file_exists(news_main.html))
   {
    $datei=fopen("news_main.html","r");
    if($datei)
     {
      $dateigroesse=filesize("news_main.html");
      $inhalt=fread($datei,$dateigroesse);
      $inhalt=htmlspecialchars($inhalt);
      $inhalt=htmlentities($inhalt);
      print($inhalt);
      fclose($datei);
     }
    }
?>
</textarea>
</BODY>
</HTML>

Aber irgendwie klappt das nicht ganz...

Kann mir jemand helfen?

Gruß

Mastershrimp

  1. Hallo,

    Aber irgendwie klappt das nicht ganz...

    Ja toll, und was geht nicht? Fehlermeldung?

    Kann mir jemand helfen?

    Wenn du mir hilfst.

    gruß,
    Severin

    --
    Realität ist das, was nicht verschwindet, wenn man aufhört, daran zu glauben.
    --Philip K. Dick
    1. Oh. Tut mir leid. Hatte ich vergessen zu erwähnen.

      Der Fehler besteht darin, dass nix passiert. Es wird nix eingefügt. Einfach nur leer.

      Der Quelltext der Ergebnisseite ist:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <HTML>
      <HEAD>
      <TITLE></TITLE>
      <META NAME="Generator" CONTENT="TextPad 4.6">
      <META NAME="Author" CONTENT="?">
      <META NAME="Keywords" CONTENT="?">
      <META NAME="Description" CONTENT="?">
      </HEAD>

      <BODY>
      <textarea>

      </textarea>
      </BODY>
      </HTML>

      Gruß

      Mastershrimp

  2. Hallo,

    if(file_exists(news_main.html))
       {
        $datei=fopen("news_main.html","r");
        if($datei)
         {
          $dateigroesse=filesize("news_main.html");
          $inhalt=fread($datei,$dateigroesse);

    Die ganze einleserei kannst Du stark vereinfachen,
    indem Du file_get_contents() verwendest.
    Braucht allerdings PHP 4.3.0 oder hoeher.
    (Ein guter Grund fuer ein Update;-)
    http://www.php.net/manual/de/function.file-get-contents.php

    $inhalt=htmlspecialchars($inhalt);
          $inhalt=htmlentities($inhalt);

    Entweder - oder.
    Nicht beide! Sonst wandelst Du <, >, " und & ja doppelt um...

    Aber irgendwie klappt das nicht ganz...

    Dann lass Dir nach jedem Schritt, der schiefgehen kann,
    die Fehlermeldung anzeigen.
    Und wenn Du es immer noch nicht schaffst,
    dann poste die Fehlermeldungen hier.

    Gruesse,

    Thomas

    --
    Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
    Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
    Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    1. $inhalt=htmlspecialchars($inhalt);
            $inhalt=htmlentities($inhalt);

      Entweder - oder.
      Nicht beide! Sonst wandelst Du <, >, " und & ja doppelt um...

      Ich lerne PHP gerade anhand eines Buches - und dort sagen die, dass das in der Reihenfolge so ok sei...Ist aber atm egal. Trotzdem danke für den Hinweis!

      Dann lass Dir nach jedem Schritt, der schiefgehen kann,
      die Fehlermeldung anzeigen.
      Und wenn Du es immer noch nicht schaffst,
      dann poste die Fehlermeldungen hier.

      Wie lasse ich mir Fehlermeldungen ausgeben?

      1. Hallo,

        $inhalt=htmlspecialchars($inhalt);
              $inhalt=htmlentities($inhalt);
        Ich lerne PHP gerade anhand eines Buches - und dort sagen die, dass das in der Reihenfolge so ok sei...

        Dann ist es ein schlechtes Buch.
        Welches?

        Lies lieber mal im Manual nach, was die Funktionen machen.
        Und probier es aus.

        Nach meinem Verstaendnis passiert folgendes:

        Damen & Herren sowie "Fräuleins"
        htmlspecialchars()
        Damen & Herren sowie "Fräuleins"
        htmlentities()
        Damen &amp; Herren sowie &quot;Fräuleins&quot;

        http://www.php.net/manual/de/function.htmlentities.php
        http://www.php.net/manual/de/function.htmlspecialchars.php

        Wie lasse ich mir Fehlermeldungen ausgeben?

        Zum Beispiel, indem Du immer auch den else { }
        Teil schlau gestaltest.
        Und indem Du schaust, ob eine Funktion false
        zurueckgibt.
        Lies das Manual zu den Funktionen, die Du
        verwendest, um zu erfahren, was sie in welchem
        Fall zurueckgeben.

        Da Dein Buch offenbar auch hier (Fehlerbehandlung)
        nichts taugt: Kauf Dir ein besseres Buch!

        Oder benuetze zumindest parallel zum Buch
        das Manual:
        http://www.php.net/manual/en/ (englisch, aktuell und vollstaendig)
        http://www.php.net/manual/de/ (deutsch, z.T. veraltet/unvollstaendig)
        und die (deutschsprachige) dclp-FAQ:
        http://www.dclp-faq.de/

        Dort hat es viele gute Code-Beispiele,
        die meist vorbildliche Fehlerbehandlungen
        vorschlagen.

        Gruesse,

        Thomas

        --
        Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
        Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
        Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
        1. »» Dann ist es ein schlechtes Buch.

          Welches?

          Autor: Michael Seeboerger-Weichselbaum
          Verlag: rororo
          Titel: PHP - Grundkurs Computerpraxis

          Machte auf mich eigentlich einen recht vernünftigen Eindruck. Naja.
          Das Buch sagt zu dem Problem folgendes:
          "Warum sollte htmlspecialchars() vor htmlentities() aufgerufen werden?
          Dies liegt daran, dass die Sonderzeichen, die über htmlentities() konvertiert werden, alle mit dem &-Symbol beginnnen. Würde dann erst htmlspecialchars() aufgerufen werden, würde dieses &-Symbol in eine entsprechende Entität umgewandelt werden."

          Die scheinen das also schon zu berücksichtigen und absichtlich so zu machen.

          Zum Beispiel, indem Du immer auch den else { }
          Teil schlau gestaltest.

          Ok, stimmt. Daran hätte ich denken können.

          Gruß

          1. Nochmal zum Thema "Ersetz-Funktionen":
            Du hast recht. Es wird wirklich falsch umgewandelt. Komisch, dass der das in sein Buch schreibt - müsste doch eigentlich jedem halbwegs php-begabten bekannt sein...

            Naja. Danke!

            1. Hallo,

              Du hast recht. Es wird wirklich falsch umgewandelt.

              Siehst Du. ;-)
              Es geht eben nichts ueber testen und ausprobieren.

              Wie ich ganz am Anfang sagte:
              Entweder htmlentities() - oder htmlspecialchars().

              Ich persoenlich brauche meist htmlspecialchars()
              und bin ueberzeugt, dass das reicht.

              Die Umlaute u.s.w. muessen ja nicht unbedingt
              in Entities verwandelt werden - im Gegenteil,
              der Quellcode wird dadurch richtig haesslich.

              (In gewissen Konstellationen kann es allerdings
              notwendig sein, htmlentities() zu verwenden.)

              Thomas
                der doch eigentlich der unglaeubige sein sollte...

              --
              Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
              Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
              Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
              1. Hello,

                Da hat der bestimmt einen Knoten von einem anderen Fall im Kopf gehabt, wo das wichtig ist:

                $text = "in diesem Text sollen üble Umläute und böse Straßensprache\n".
                        "sowie ein paar eingestreute aber nicht so häufige Zeilen-\n".
                        "umbrüche enthalten sein."

                Nun soll dieser Text per HTML ausgegeben werden.

                $text = htmlentities($text);
                $text = nl2br($text);

                echo $text;

                Wenn man die Funktionen andersherum anwendet, bleibt von den <br /> nichts übrig, als das sie als Zeichenfolge <br /> angezeigt werden...

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  3. Hello,

    if(file_exists(news_main.html))

    Aber irgendwie klappt das nicht ganz...

    Kann mir jemand helfen?

    Schau nochmal gaaanz genau hin. *gg*

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Schau nochmal gaaanz genau hin. *gg*

      Oh Gott! Jetzt seh ichs auch! Vielen Dank!! Jetzt gehts!

      Manchmal sind die blödsten Fehler die schlimmsten ;)

      Gruß

      Mastershrimp