Na ile sposobów można pobrać zawartość pliku?

piechnat
  • $fp = fopen('./jakis_plik.txt', 'r');
    flock($fp, 1);
    while(!feof($fp)) {
        $zawartosc[] = fgets($fp, 2048);
    }
    flock($fp, 3);
    fclose($fp);
    
    $zawartosc = join('', $zawartosc);
    
  • $nazwa_pliku = './jakis_plik.txt';
    $fp = fopen($nazwa_pliku, 'r');
    flock($fp, 1);
    $zawartosc = fread($fp, filesize($nazwa_pliku));
    flock($fp, 3);
    fclose($fp);
    
  • $zawartosc = join('', file('./jakis_plik.txt'));
    
  • foreach (file('./jakis_plik.txt') as $line) {
        $zawartosc .= $line;
    }
    
  • $zawartosc = file_get_contents('./jakis_plik.txt');
    

6 komentarzy

Jak otworzyć plik blokowo? Przypuszczalnie mam w delhi kod:
[code]
TDataRec = packed record
DanaA : Single;
DanaB : Integer;
i tak dalej...
End;

var
DataRec : Array of TDataRec;
NofRec : LongWord;

...
S:=FileSize(F);
NofRec:= S div 56;
For k:=1 to NofRec do BlockRead(F, DataRec[k-1],56);
...
[/code]

Jak to przenieść na PHP'a ??
F - uchwyt do pliku

$nazwa_pliku = file('./jakis_plik.txt');
for($i = 0; $i < count($nazwa_pliku); $i++)
{
  $zawartosc .= $nazwa_pliku[$i].'<br />';
}

zabujstwo dla serwera w przypadku dużych plików.
pozatym czym się to różni od tego:

$zawartosc = join('', file('./jakis_plik.txt'));

może tym, że ten 2-gi jest bardziej optymalny?? tylko (sic!)

Czepiając się:
zapomnieliśmy jeszcze o:

fscanf();
fgetc();
readfile();

Mam takie pytanko, czy wie ktoś jak wyświetlić na stronie plik zdalny. Chodzi mi o to aby wyświetlić np. plik http://www.google.pl/index.html

ja osobiście bym wczytał plik przez cURL, odarł z nagłówków, etc, i wstawił na stronę.
http://pl.php.net/manual/en/book.curl.php <- dokumentacja cURL

Mam takie pytanko, czy wie ktoś jak wyświetlić na stronie plik zdalny. Chodzi mi o to aby wyświetlić np. plik http://www.google.pl/index.html

$zawartosc_pliku = fread($fd, filesize($nazwa_pliku)); - powino być $fp... chyba dodałeś tą wskazówke nie sprawdzając kodu :P

jesli zas chodzi o wczytanie calego pliku naraz, jest najszybsza z tutaj podanych, oczywiscie jesli chodzi o wczytanie okreslonej linijki, lepszy jest 1 sposob.
zapomnielismy o file_get_content() ? ;)

Jeżeli chodzi o ostatni przykład to go nie polecam, ponieważ od funkcji file() już się odchodzi, ponieważ funckja ta wczytuje cały plik do tablicy i w przypadku dużych plików (np. logi serwera (pisząc skrypt do analizy logów serwera)) to ta funkcja zużywa dużo pamięci serwera.