RkBlog

Hardware, programming and astronomy tutorials and reviews.

Obsługa plików w PHP

PHP obsługuje liczne operacje na plikach. Możemy je czytać, tworzyć czy edytować. Pełna lista funkcji dostępna jest w dokumentacji PHP

Wczytywanie zawartości plików

Funkcją do wczytywania zawartości pliku jako łańcuch służy funkcja file_get_contents() (PHP 4 >= 4.3.0, PHP 5), która jako parametr przyjmuje ścieżkę do pliku. Jeżeli w php.ini parametr allow_url_fopen ustawiony jest na "On" to można także podawać adresy URL do plików. Oto przykłady:
<?php
// wczytanie pliku
$plik = file_get_contents('plik.txt');
echo $plik;

// wczytanie pliku przez URL
$plik = file_get_contents('http://www.google.pl');
echo '<br /><br />';
highlight_string($plik);
?>
Inną funkcją służącą do wczytywania zawartości plików jest file() (PHP 4, PHP 5), która wczytuje zawartość pliku do tablicy, gdzie każdy wiersz pliku staje się elementem tablicy. file() oczekuje ścieżki lub URLa do pliku jaki ma być otwarty. Oto przykład:
<?php
$plik = file('plik.txt');
echo '<pre>';
print_r($plik);
?>

Zapis danych do plików

Do zapisu danych do pliku tekstowe służy funkcja file_put_contents(PLIK, DANE); (PHP 5) oczekującą dwóch argumentów - nazwy pliku i danych. Przykład:
file_put_contents('plik2.txt', 'treść');
W PHP4 można zastosować trio fopen(), fwrite() i fclose():
<?php
$wskaz = fopen("plik2.txt", "w");
fwrite($wskaz,'dane');
fclose($wskaz);
fopen oczekuje dwóch argumentów - ścieżki lub URLa do pliku oraz określenia trybu trybu otwarcia pliku:
  • r - otwiera plik do odczytu
  • r+ - otwiera plik do odczytu i zapisu
  • w - otwiera tylko do zapisu. Jeśli plik nie istnieje to próbuje go utworzyć.
  • w+ - otwiera do odczytu i zapisu. Jeśli plik nie istnieje to próbuje go utworzyć.
W powyższym przykładzie użyliśmy "w", czyli tryb zapisu. Funkcja fopen() zwraca uchwyt (wskaźnik) do otwartego pliku, który musimy przekazywać pozostałym funkcjom. fwrite zapisuje podane dane, a fclose zamyka uchwyt. Możliwy jest również odczyt danych:
<?php
$wskaz = fopen("plik2.txt", "r");
while($wiersz = @fgets($wskaz, 1024))
	{
	echo $wiersz;
	}
fclose($wskaz);
Zaleca się stosowanie file_get_contents czy file.

Pobieranie informacji o plikach i katalogach

  • file_exists(ŚCIEŻKA) - zwraca wartość True jeżeli ścieżka prowadzi do istniejącego pliku (plik istnieje)
  • filesize(ŚCIEŻKA) - zwraca rozmiar pliku w bajtach
  • filemtime(ŚCIEŻKA) - zwraca datę modyfikacji pliku jako znacznik czasu
  • is_dir(ŚCIEŻKA) - zwraca wartość True jeżeli podana ścieżka prowadzi do katalogu
  • is_file(ŚCIEŻKA) - zwraca wartość True jeżeli podana ścieżka prowadzi do pliku
  • is_readable(ŚCIEŻKA) - zwraca wartość True jeżeli można czytać dany plik
  • is_writable(ŚCIEŻKA) - zwraca wartość True jeżeli można pisać do podanego pliku
RkBlog

Podstawy PHP, 14 July 2008, Piotr Maliński

Comment article