Forum und email

fread

(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 ($handlefilesize ($filename));
fclose ($handle);
?>

Warning

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 ($handlefilesize ($filename));
fclose ($handle);
?>

Warning

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($handle8192);
    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().