webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> porady >> php + mysql

Zapis i odczyt z pliku

autor: Mateusz Bogolubow, ostatnia modyfikacja: 2007-02-23

szukaj: zapis do pliku zapis do pliku odczyt z pliku odczyt z pliku operacje na plikach operacje na plikach PHP PHP

Operacje na plikach w PHP nie jest rzeczą skomplikowaną. Spróbuje w jasny sposób przedstawić zapis do pliku oraz jego odczyt.

Zapis do pliku

<?php

$nazwa_pliku = "plik.txt";

if (is_writeable($nazwa_pliku))
  {
   if ($plik = fopen($nazwa_pliku, "a"))
     {
      if (fwrite($plik, "Linia pierwsza"."
"."Linia druga") !== FALSE) echo "Zapis do pliku zakończył się powodzeniem...";
        else echo "Zapis do pliku się nie powiódł...";

      fclose($plik);

     } else echo "Nie mogę nawiązać połączenia z plikiem...";

  } else echo "Do pliku nie można dopisać informacji lub on nie istnieje..."
  
?>

Funkcja is_writeable() sprawdza czy dany plik istnieje i czy jest do zapisu i jeśli obydwa warunki są spełnione zwraca TRUE w przeciwnym wypadku FALSE

fopen() pobiera uchwyt (powiedzmy, że nawiązuje połączenie) pliku. Jest dwu argumentową funkcją gdzie pierwszy argument to adres pliku, a drugi rodzaj nawiązanego połączenia. Istnieje kilka typów "połączeń".

fwrite() dopisuje dane podane w drugim argumencie funkcji do pliku o uchwycie podanym w pierwszym argumencie. Znak " "; jest znakiem końca linii.

fclose() zamyka połączenie z plikiem.

Pamiętajmy również o ustawieniu odpowiednich uprawnień dla pliku - chmod o wartości 666.

Odczyt z pliku

<?php

$nazwa_pliku = "plik.txt";

if (is_readable($nazwa_pliku))
  {
   if ($plik = fopen($nazwa_pliku, "r"))
     {
      $dane = fread($plik, filesize($nazwa_pliku));
      
      if ($dane === FALSE) echo "Odczyt danych z pliku nie powiódł się...";
        else echo "odczytane dane: ".$dane."<br />";

      fclose($plik);

     } else echo "Nie mogę nawiązać połączenia z plikiem...";

  } else echo "Z pliku nie można odczytać informacji lub on nie istnieje...";

?>

Funkcja is_readable() działa podobnie jak is_writeable() tyle ze sprawdza czy dany plik istnieje i czy jest on do odczytu.

Pozostała część kodu jest taka sama z drobna różnicą. Funkcja fread() odczytuje dane z pliku o uchwycie podanym w pierwszym argumencie. Ilość danych zależy od drugiego argumenty gdzie podajemy ilość znaków, które chcemy pobrać. Jeśli chcemy pobrać cała zawartość pliku korzystamy z funkcji filesize(), która zwraca wielkość pliku w bajtach. Jak zapewne wiesz jeden znak to jeden bajt.

Zapewne zastanawiasz się dlaczego tekst jest w jednej linii, jak mają być dwie?! Pamiętaj, że w kodzie HTML znak nowej linii jest ignorowany. Można to naprawić, ale o tym pisałem już w innej poradzie.

Istnieje jeszcze kilka innych możliwości odczytu. Możemy skorzystać z funkcji file_get_contents(), która odczytuje dane z pliku I zapisuje do zmiennej w formie ciągu znaków. Funkcja ta jest efektywniejsza od fread().

$dane = file_get_contents($nazwa_pliku);

Ciekawmy rozwiązaniem jest również korzystanie z funkcji file() tworzącej tablicę, której elementami są linie pliku

$dane = file($nazwa_pliku);

Mateusz Bogolubow

Osoby czytające tę publikację przeglądały również:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org