(PHP 4, PHP 5)
fread — Binair veilig bestand lezen
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);
?>
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);
?>
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);
?>
Note: 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.
Note: 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().