Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] praca z plikiem jednorodnym
Forum PHP.pl > Forum > Przedszkole
Crops
Witam.

Od razu napiszę, że wiem, iż praca z bazami danych jest wygodniejsza i bezpieczniejsza niż z plikami jednorodnymi, ale chciałbym znać odpowiedź (jeśli to możliwe) na poniższy problem.

Jest przypuśćmy plik tekstowy:

Kod
Tekst Tekst
exclamation.gif!
Inna tresc
exclamation.gif!
Tekst Tekst


I otwieram go poprzez fopen() i chciałbym go teraz zapisać, a raczej nadpisać. Imo w tym wypadku, mimo ze to nadpisanie to będzie trzeba użyć trybu a jako parametru funkcji fopen (ale podkreślam IMO ;p ), gdyż chciałbym pozostawić całą treść pliku bez zmian, za wyjątkiem treści zawartej pomiędzy wykrzyknikami. Wykrzykniki w tym pliku tekstowym mogły by służyć jako jakiś znacznik kiedy zacząć nadpis i kiedy go zakończyć.

Czyli plik początkowy:
Kod
Tekst Tekst
exclamation.gif!
Inna tresc
exclamation.gif!
Tekst Tekst


Plik wyjściowy:
Kod
Tekst Tekst
exclamation.gif!
Tresc zmieniona na dowolna.
exclamation.gif!
Tekst Tekst



Każda pomoc się przyda ;] Z góry dzięki.
Pozdrawiam.
Cezar708
no niestety, musisz nadpisać cały plik. Za pomocą php możesz tylko zmienić jego treść (czyli w tym przypadku to co chcesz nadpisać)
b_chmura
  1. <?php
  2. $plik = 'plik.txt';
  3. $new = 'nowa_tresc';
  4.  
  5. $file = file($plik);
  6. $fopen = fopen($plik, "w+");
  7.  
  8. foreach($file as $linia) 
  9. {
  10. if ($linia == "!!!\n") 
  11. {
  12. fwrite($fopen, $new);
  13. }
  14. else 
  15. {
  16. fwrite($fopen, $linia);
  17. }
  18. }
  19.  
  20. fclose($fopen);
  21. ?>

chyba coś w ten deseń... pisane z palca.
nexis
Cytat(b_chmura @ 17.08.2007, 13:05:24 ) *
  1. <?php
  2. $plik = 'plik.txt';
  3. $new = 'nowa_tresc';
  4.  
  5. $file = file($plik);
  6. $fopen = fopen($plik, "w+");
  7.  
  8. foreach($file as $linia) 
  9. {
  10. if ($linia == "!!!\n") 
  11. {
  12. fwrite($fopen, $new);
  13. }
  14. else 
  15. {
  16. fwrite($fopen, $linia);
  17. }
  18. }
  19.  
  20. fclose($fopen);
  21. ?>


To nadpisuje znaczniki "!!!", a nie treść między nimi.
Crops
Niestety ale w/w kod nie działa na moim serwerze ;/ Plik zostaje poprawnie otworzony, i niby coś w nim sie zmienia (testowałem programem, który wykazał ze plik jest zmieniony) ale faktycznie wszystko pozostaje bez zmian. Cały plik jest identyczny z początkowym.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.