Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP]String an Anfang einer Textdatei (https://www.delphipraxis.net/81515-%5Bphp%5Dstring-anfang-einer-textdatei.html)

Angel4585 28. Nov 2006 14:46


[PHP]String an Anfang einer Textdatei
 
Hi, mit folgendem Code schreibe ich in eine Textdatei:
Code:
function AddToShoutbox($userid,$text){
global $sbfile;
if(is_file($sbfile))
  {
  $file = fopen($sbfile,"a");
  } 
else
  {
  $file = fopen($sbfile,"w+");
  }
fseek($file,"0");
fwrite($file,$userid . "\t" . time() . "\t" . $text ."\r\n");
fclose($file);
};
Mein Problem, trotz dem fseek schreibt mir das Teil alles ans Ende der Datei und nicht an den Anfang.
Was mach ich falsch?

Danke schonmal

:angel:

DGL-luke 28. Nov 2006 14:52

Re: [PHP]String an Anfang einer Textdatei
 
sicher, dass du da den string "0" übergeben willst und nicht die zahl "0"?

ich würde das aber sowieso so machen:

Code:
$text = file_get_contents('file.txt');
$text = 'blubb' . "\n" . $text;
file_put_contents('file.txt',$text); //erst ab PHP 5, ansonsten fopen/fwrite/fclose

Angel4585 28. Nov 2006 14:57

Re: [PHP]String an Anfang einer Textdatei
 
geht au nich wenn ich nur 0 un nich "0" übergebe.. wobei ich denk das es auch kein unterschied macht oder?

auch nicht wenn ich anstatt fwrite, fputs verwende..

DGL-luke 28. Nov 2006 15:26

Re: [PHP]String an Anfang einer Textdatei
 
Also Delphi würd dir alles um die Ohren hauen was es hat, wenn du in einer Datei die Stelle '0' suchen willst... und weil PHP da ein bisschen unempfindlicher ist, kann es leicht vorkommen, dass du was falsches übergibts und es damit zu falschem verhalten kommt, obwohl du keine fehlermeldung kriegst.

Angel4585 28. Nov 2006 15:35

Re: [PHP]String an Anfang einer Textdatei
 
Dacht ich mir au un hab 1 und auch ma "1" übergeben, aber geht beides au net...

DGL-luke 28. Nov 2006 15:37

Re: [PHP]String an Anfang einer Textdatei
 
dann machs so wies ich vorgeschlagen hab: Auslesen, ändern, drüberschreiben.

H4ndy 28. Nov 2006 15:40

Re: [PHP]String an Anfang einer Textdatei
 
Und prüfe am besten mal, ob dir fseek auch 0 (Erfolg) und nicht -1 (Fehlgeschlagen) zurückliefert.
Siehe auch http://de2.php.net/manual/de/function.fseek.php

Falls du kein PHP5 hast:
Code:
  if (!function_exists("file_put_contents")) {
    /**
     * For PHP4 backward compatibiliy.
     * Provides a simple version of the PHP5 function file_put_contents.
     * Provious content in the file $filename will be lost.
     * Returns the bytes which were successfully written.
     *
     * @param string $filename
     * @param string $text
     * @return integer
     */
    function file_put_contents($filename,$text){
      // provides file_put_contents for PHP < PHP5
      $fp = fopen($filename,"w+");
      $result = fwrite($fp,$text);
      fclose($fp);
      return $result;
    }
  }

  if (!function_exists("file_get_contents")) {
    /**
     * For PHP4 backward compatibiliy.
     * Provides a simple version of the PHP5 function file_get_contents.
     * Returns the content of the file as a string.
     *
     * @param string $filename
     * @return string
     */
    function file_get_contents($filename){
      if(($contents = file($filename))){
        $contents = implode('', $contents);
        return $contents;
      } else {
        return false;
      }
    }
  }

Angel4585 29. Nov 2006 07:03

Re: [PHP]String an Anfang einer Textdatei
 
ok, also fseek gibt 0 zurück, mit ftell lass ich mir die position des zeigers ausgeben, die ist auch 0.

ihr mein also ich sollte quasi den kompletten inhalt der datei rausholen, den neuen teil vorna anhängen und dann alles da drin wieder überschreiben?

Edit: ich mach des jetz ma andersrum... ich häng die Daten hinten an un lies sie rückwarts aus dann gehts genauso :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz