Harald: php => datei erzeugen

Hi!

Kann ich per php eine html-datei am server erzeugen?
=> Wenn ich die php-datei ausführe schreibt mir php eine *.htm auf den server

danke
harald

  1. Hi!

    Kann ich per php eine html-datei am server erzeugen?
    => Wenn ich die php-datei ausführe schreibt mir php eine *.htm auf den server

    danke
    harald

    Hallo,

    es wäre ziemlich hilfreich, deinen Code auch zu sehen...
    Prinzipiell kannst du natürlich fast jede Art von Datei durch PHP
    erzeugen lassen.

    Gruss
    Dieter

    1. naja, ich hab eine php-datei die mehrere ähnliche Info-Seiten erstellt (code is aber egal und irsinnig lang). Damit ich aber in google bessere ergebnisse erreiche möchte ich diese Seiten als html abspeichern. Jetzt wollte ich anfangs die Seiten alle händisch öffnen & abspeichern, bis mir dann eingefallen ist, dass das doch (vielleichT)auch das php machen könnte. Daher meine Frage: Wie kann ich html-code-zeilöen in eine htm-datei abspeichern lassen?

      vielen Dank
      Harald

      1. Hallo Harald,

        wenn ich deine Frage richtig verstehe, willst du also mit php eine textausgabe in eine Datei lenken:

          
        $datei = fopen($dateiname,"w+");  
        fwrite($datei, $deininhalt);  
        fclose($datei);  
        
        

        Mit dem Argument "w+" wird die Datei die in Dateiname definiert ist
        (z.B. "test.htm") geöffnet, oder, falls diese noch nicht vorhanden
        ist, angelegt. Der Content ($deininhalt) wird dann in die Datei
        geschrieben (fwrite) und anschließend die Datei geschlossen (fclose).

        Gruss
        Dieter

        1. Oh, so einfach is das *freu*

          danke :-)

        2. Hallo Freunde des gehobenen Forumsgenusses,

          $datei = fopen($dateiname,"w+");
          fwrite($datei, $deininhalt);
          fclose($datei);

            
          Hier fehlt die Fehlerbehandlung, man muss testen ob die Datei auch wirklich geöffnet wurde, ob so viele Bytes in die Datei geschrieben wurden wie der zu schreibende Inhalt lang ist und ob die Datei wirklich korrekt geschlossen wurde. Ansonsten bekommt man u.U. Warnungen.  
            
          Gruß  
          Alexander Brock
          
          -- 
          ![A](http://alexanderbrock.de/img/pavatar.png)  
          [V-Text-Categorizer - Ein Klasse in PHP, die Text anhand von Statistiken über Texte in Kategorien sortiert (z.B. in Spam und nicht-Spam).](http://alexanderbrock.de/v-text-categorizer/)
          
          1. hi!

            ehm...kannst du darauf näher eingehen?
            Was genau soll ich da noch machen?

            thx
            harald

    2. Hallo Freunde des gehobenen Forumsgenusses,

      Prinzipiell kannst du natürlich fast jede Art von Datei durch PHP
      erzeugen lassen.

      Man kann jede Art von Datei mit PHP erzeugen.

      Gruß
      Alexander Brock

  2. Hallo,

    ... und dann schau Dir auch nochmal die Buffer-Funktionen an
    http://de2.php.net/manual/en/function.ob-start.php

    Damit kannst Du dann die normalerweise für den Browser (Standardausgabe) erzeugte Datei abfangen und mittels der Dateifunktionen an eine Datei auf dem Datenträger senden.

    LG
    Chris

    1. Hi!
      hmmm...sieht echt interessant aus, dann könnt ich mir einiges sparen (echo umschreiben...)

      aber um ehrlich zu sein bin ich mir nicht sicher ob ich das ganz kapier *g*

      wäre das richtig, wenn ich "hallo, das ist ein html-text, der auch teils in php erstellt wurde" in eine neue datei namens "test.htm" schreiben will?

      [code:php]
      <?php
      ob_start();
      ?> hallo, das ist ein html-text, <?php echo "der auch teils in php erstellt wurde";

      ob_end_flush();
      $data = ob_get_contents();
      ob_end_clean();

      $datei = fopen("test.htm","w");
      echo fwrite($datei, $data,10000);
      fclose($datei);
      ?>
      [/code]

      thx
      harald

      1. Hallo,

        <?php
        ob_start();
        ?> hallo, das ist ein html-text, <?php echo "der auch teils in php erstellt wurde";

        »» ob_end_flush(); Hier zu früh!

        $data = ob_get_contents();

        und hier wahlweise eben

        ob_end_flush();
        #oder
          ob_end_clean();

        denn ob_end_flush() leert den Buffer und gibt ihn an den Browser aus, und ob_end_clean() leert den Buffer ins Dev NUL. Beide beenden die Ausgabeunterbrechnung.

        $datei = fopen("test.htm","w");

        echo fwrite($datei, $data);

        fclose($datei);
        ?>

        So müsste das klappen.

        LG
        Chris

        1. Hallo :-)

          <?php
          ob_start();
          ?> hallo, das ist ein html-text, <?php echo "der auch teils in php erstellt wurde";

          »» ob_end_flush(); Hier zu früh!

          $data = ob_get_contents();

          und hier wahlweise eben

          warum is das hier zu früh, wo gehört es denn hin?

          ob_end_flush();
          #oder
            ob_end_clean();

          #dann hat dort ein user bei www.php.net einen fehler gemacht...

          denn ob_end_flush() leert den Buffer und gibt ihn an den Browser aus, und ob_end_clean() leert den Buffer ins Dev NUL. Beide beenden die Ausgabeunterbrechnung.

          $datei = fopen("test.htm","w");
             echo fwrite($datei, $data);
          fclose($datei);
          ?>

          So müsste das klappen.

          geht das für die nicht so erfahrenen(=> mich) nochmal in Reinform *G*

          thx
          harald

          1. Ha Ha (Hallo Harald) *scnr*

            warum is das hier zu früh, wo gehört es denn hin?

            Zitat:
            ob_end_flush --  Flush (send) the output buffer
                             and turn off output buffering

            Wenn Du also das flush direkt vor dem Auslesen den Buffers durchführst, waw wird denn wohl in Deiner Datei auf der Platte nachher drinstehen?

            Unter "Senden" versteht man hier die Ausführung des eingestellten Ausgabe-Handlers, also normalerweise die Leerung des Buffers in Richtung Standard-Ausgabe-Kanal.

            LG
            Chris

            1. also:

                
              <?php  
              ob_start();  
              ?> hallo, das ist ein html-text, <?php echo "der auch teils in php erstellt wurde";  
                
              $data = ob_get_contents();  
              ob_end_flush();  
                
              $datei = fopen("test.htm","w");  
              echo fwrite($datei, $data);  
              fclose($datei);  
              ?>  
              
              

              passt das?
              thx
              Harald