fread
(PHP 4, PHP 5)
fread — Binair veilig bestand lezen
Beschrijving
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 ("https://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().