alexandra: text datei im utf8 format schreiben

über folgendes formular schreibe ich eine txt datei.

------------------------------

<?
if ($button) {
// Hier wird das File geschrieben
  $fp = fopen('news.txt', 'w');
  $antwort = $antwort."\n";
  fputs($fp, $antwort, strlen($antwort));
  fclose($fp);

// Die Ausgabe der Datei
  $fp = fopen('news.txt', 'r');
  fpassthru($fp);

}
else {
    echo '<form name="daten_edit" action="'.$PHP_SELF.'" method="post">
    <textarea name="antwort" cols="60" rows="20"></textarea>
    <input type="submit" name="button" value="Abschicken">
    </form>';
}
?>

----------------

kann ich die datei im utf 8 format speichern? (utf8_encode();)

wenn ja - wo muss das denn hin?

  1. hi,

    kann ich die datei im utf 8 format speichern? (utf8_encode();)

    sofern du das für sinnvoll hältst - die lösung scheinst du doch schon zu kennen?

    wenn ja - wo muss das denn hin?

    es muss passieren, bevor du den text in die datei schreibst.
    (sag bitte nicht, dass du diese stelle wirklich nicht findest ...?)

    gruss,
    wahsaga

    1. oh mann - so viel ironie. ;)

      aber wo muss das denn hin?

  2. Hallo Alexandra,


    <?
    if ($button) {              # ist $button vorhanden und > 0 ?
    // Hier wird das File geschrieben
      $fp = fopen('news.txt', 'w');  # Datei zum Schreiben öffnen
      $antwort = $antwort."\n";      # an Parameter antwort einen

    # Zeilenumbruch amhängen

    ## hier ?

    fputs($fp, $antwort, strlen($antwort)); # Zeile wegschreiben
      fclose($fp);                            # Datei schließen

    // Die Ausgabe der Datei
      $fp = fopen('news.txt', 'r');
      fpassthru($fp);

    fclose($fp);                   # bitte auch wieder schließen

    für die letzen drei Zeilen kann man auch schreiben:

    #    readfile('news.txt');

    ##   allerdings sind beide Varianten falsch, denn der Inhalt
    ##   der Datei muss VOR der Ausgabe erst für den Browser auf-
    ##   bereitet werden. Also:

    $fp = fopen('news.txt', 'r');
         $data = fread($fp,filesize('news.txt'));
         fclose($fp);                   # bitte auch wieder schließen

    ### hier müsste dan die utf8-Dekodierung stattfinden...
         $data = htmlentities($data);
         echo $data;

    }

    ##»» else {  ## man kann auf jeden fall die Textarea anzeigen
                 ## genauso wie im SelfForum bei der Threadanzeige

    echo '<form name="daten_edit" action="'.$PHP_SELF.'" method="post">

    <textarea name="antwort" cols="60" rows="20">$data</textarea>

    <input type="submit" name="button" value="Abschicken">
        </form>';
    }
    ?>


    Mit diesem Script kannst Du nur eine einzige Textarea speichern.
    Wenn es mehrere werden sollen, müsstest Du die Zeilenumbrüche in
    der Textarea besonders behandeln, damit die Speicherung als Zeile
    in der Datei nicht zerstört wird.

    Grüße

    Tom