Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] praca z plikiem jednorodnym
Crops
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


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


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


Plik wyjściowy:
Kod



Każda pomoc się przyda ;] Z góry dzięki.
Pozdrawiam.

Ten post edytował Crops 17.08.2007, 11:53:42
Go to the top of the page
+Quote Post
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


no niestety, musisz nadpisać cały plik. Za pomocą php możesz tylko zmienić jego treść (czyli w tym przypadku to co chcesz nadpisać)
Go to the top of the page
+Quote Post
b_chmura
post
Post #3





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

Ostrzeżenie: (0%)
-----


  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.

Ten post edytował b_chmura 17.08.2007, 12:05:56
Go to the top of the page
+Quote Post
nexis
post
Post #4





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Crops
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 1.01.2007

Ostrzeżenie: (10%)
X----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:17