Programowanie w języku PHP » FAQ

Jak łatwo wykonać jakąś operace na pliku txt

Poniżej przedstawiam zbiór funkcji do łatwej edycji plików txt. Myśle, że funkcji nie trzeba tłumaczyć.

  function file_DeleteLine ($filename, $index) {
  //Usuwa linie z pozycji $index
    $file = file ($filename);
 
    $fp = fopen ($filename, "w");
    flock($fp, LOCK_EX);
    for( $w = 0; $w < count($file); $w++ )
    {
      if ($index <> $w)
        fwrite ($fp, $file[$w]);
    }
    flock($fp, LOCK_UN);
    fclose($fp);
  }
 
  function file_UpdateLine ($filename, $index, $line) {
  //Zamienia linie w pozycji $index na ciag z $line
    $file = file ($filename);
    $file[$index] = $line . "\r\n";
 
    $fp = fopen ($filename, "w");
    flock($fp, LOCK_EX);
    for( $w = 0; $w < count($file); $w++ )
    {
      fwrite ($fp, $file[$w]);
    }
    flock($fp, LOCK_UN);
    fclose($fp);
  }
 
  function file_GetLine ($filename, $index) {
  //Podaje linie z pozycji $index
    $file = file ($filename);
    $line = $file[$index];
    //$line = str_replace ("\r\n", '', $line);
    return $line;
  }
 
  function file_LinesCount ($filename) {
  //Podaje ilosc lini w pliku
    $file = file ($filename);
    return count ($file);
  }
 
  function file_ReplaceLines ($filename, $from, $to) {
  //Zamienia miejscami linie z pozycji $from i $to
    $file = file ($filename);
 
    $line = $file[$from];
    $file[$from] = $file[$to];
    $file[$to] = $line;
 
    $fp = fopen ($filename, "w");
    flock($fp, LOCK_EX);
    for( $w = 0; $w < count($file); $w++ )
    {
      fwrite ($fp, $file[$w]);
    }
    flock($fp, LOCK_UN);
    fclose($fp);
  }
 
  function file_InsertLine ($filename, $line) {
  //Dodaje linie na koncu pliku
    $fp = fopen ($filename, "a");
    flock($fp, LOCK_EX);
    fputs ($fp, $line . "\r\n");
    flock($fp, LOCK_UN);
    fclose ($fp);
  }
 
  function file_InsertLineOnTop ($filename, $line) {
  //Dodaje linie na poczatku pliku
    $fp = fopen ($filename, "r");
    $old_file = fread ($fp, filesize ($filename));
    fclose ($fp);
 
    $fp = fopen ($filename, "w");
    flock ($fp, LOCK_EX);
    $file = $line . "\r\n" . $old_file;
    $file = str_replace ("\r\n\r\n", "\r\n", $file);
    fputs ($fp, $file);
    flock ($fp, LOCK_UN);
    fclose ($fp);
  }
 
  function file_MoveLineToTop ($filename, $index) {
  //Przenosi linie z pozycji $index na gore pliku, przesuwajac caly plik nizej
    $line = file_GetLine($filename, $index);
    file_DeleteLine($filename, $index);
    file_InsertLineOnTop($filename, $line);
  }
 
  function file_SaveToFile ($filename, $something) {
  //Zapisuje sciah $something do pliku
    $fp = fopen ($filename, "w");
    flock($fp, LOCK_EX);
    fputs ($fp, $something);
    flock($fp, LOCK_UN);
    fclose ($fp);
  }
 
  function file_ReadFromFile ($filename) {
  //Odczytuje ciag z pliku
    $fp = fopen ($filename, "r");
    $file = fread($fp, filesize ($filename));
    fclose ($fp);
    return $file;
  }

4 komentarze

Drajwer 2004-05-24 17:23

browar dla Wolverina :-) przyda sie, ale dodaj komentarze

Wolverine 2004-05-23 13:23

Przenosi na gore ;)

wasyl 2004-05-23 12:31

Dobre, choc przydalyby sie komentarze, np. co robi funcja file_MoveLineToTop <- Przenosi linie na sama gore, czy 1 index w gore?
Ale ogolnie fajne