W php, podobnie jak w C++, zachodzi często potrzeba zapisu lub odczytu różnych danych do/z pliku.
Jest to niezwykle proste.Warto jedynie pamiętać, aby przeprowadzać jakąkolwiek operację na pliku, należy wykonać 3 kroki:
- otworzyć plik, tj. uzyskać wskaźnik do pliku
- zapisać/odczytać dane do/z pliku
- zamknąć plik
Do otwarcia pliku posłużymy się funkcją
resource
fopen($filename, $mode)
gdzie $filename jest nazwą pliku do otwarcia, a $mode trybem jego otwarcia.
I tak, jeśli $mode =
- "r" - plik otwarty tylko do odczytu, wskażnik pliku ustawiony na początku pliku, jeśli plik nie istniejje, następuje próba jego stworzenia
- "w" - plik otwarty tylko do zapisu, wskażnik do pliku ustawiony na początku pliku, jeśli plik nie istniejje, następuje próba jego stworzenia
- "a" - plik otwarty do zapisu, wskaźnik do pliku ustawiony na końcu pliku, a więc typ operacji to dopisanie treści na końcu pliku bez usuwania jego zawartości, jeśli plik nie istniejje, następuje próba jego stworzenia
- "r+" - otwarcie pliku do odczytu i zapisu, wskażnik pliku ustawiony na początku pliku
- "w+" - otwarcie pliku do odczytu i zapisu, wskażnik pliku ustawiony na początku pliku
Funkcja fopen zwraca identyfikator pliku.
Do zapisu warto uzywać funkcji
int
fwrite($handle, $data)
gdzie $handle jest uchwytem do pliku zwróconym przez funkcję fopen, a $data to dane które powinny zostać zapisane.
Do odczytu danych z pliku, warto stosować 2 funkcje:
string
fread($hande, int $length)
przy czym $length określa, ile bajtów będzie odczytanych z pliku
string
fgets($handle)
Funkcja ta jest zwykle używana do odczytania całej zawartości pliku.
Do zamknięcia pliku służy funkcja
bool
fclose($handle)
zwracająca true jeśli powiedzie się zamknięcie pliku.
Przykład 1 - zapis do pliku
<?php
$plik = fopen("plik.txt", "w"); if($plik)
{$dane = "Ciąg do zapisania";
fwrite($plik, $dane);
fclose($plik);
}
?>
Przykład 2 - odczyt zawartości pliku
<?php
$plik = fopen("plik.txt", "r"); if($plik)
{$zawartosc = "";
while(!feof($plik) )
{ $zawartosc .= fgets($plik);
}
fclose($plik);
echo $zawartosc;
}
?>