fread

(PHP 3, PHP 4, PHP 5)

fread -- Binair veilig bestand lezen

Beschrijving

string fread ( resource handle, int length )

fread() leest length bytes van de bestands pointer waar handle naar verwijst. Het lezen stopt als length bytes worden gelezen of als er een EOF (einde-van-bestand) optreed of (voor netwerk streams) wanneer er een pakketje toegankelijk wordt, welke ook als eerste komt.

<?php
// leest de inhoud van een bestand naar een string
$filename = "/usr/local/something.txt";
$handle = fopen ($filename, "r");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
?>

Waarschuwing

Op systemen die verschil maken tussen binaire en tekst bestanden (bijvoorbeeld Windows) moeten de bestanden worden geopent met de 'b' in fopen() mode parameter.

<?php
$filename
= "c:\\files\\somepic.gif";
$handle = fopen ($filename, "rb");
$contents = fread ($handle, filesize ($filename));
fclose ($handle);
?>

Waarschuwing

Als er gelezen wordt vanaf netwerk streams of pipes, zoals bij remote files of popen() of proc_open(), wordt het lezen gestopt als er een pakketje aanwezig is. Dit betekent dat je zelf alle data bij elkaar in blokken moet verzamelen zoals in het voorbeeld hier beneden.

<?php
$handle
= fopen ("http://www.example.com/", "rb");
$contents = "";
do {
    
$data = fread($handle, 8192);
    if (
strlen($data) == 0) {
        break;
    }
    
$contents .= $data;
} while(
true);
fclose ($handle);
?>

Opmerking: Het voorbeeld hierboven heeft een beter resultaat dan de traditionele manier met while(!feof()), omdat we de overhead besparen van een functie-aanroep per herhaling.

Opmerking: Als je alleen de inhoud van een bestand in een string wil, kan je beter file_get_contents() gebruiken, omdat hij een veel beter resultaat heeft dan de code hierboven.

Zie ook fwrite(), fopen(), fsockopen(), popen(), fgets(), fgetss(), fscanf(), file(), en fpassthru().