fread

(PHP 4, PHP 5, PHP 7, PHP 8)

freadLegge un file salvaguardando la corrispondenza binaria

Descrizione

fread(resource $handle, int $length): string

fread() legge fino a length byte dal puntatore al file indicato da handle. La lettura finisce quando una delle seguenti condizioni è raggiunta:

  • sono stati letti length byte
  • è stata raggiunta EOF (end of file - fine del file)
  • un pacchetto diventa disponibile o si verifica un socket timeout (nel caso di stream sulla rete)
  • se lo stream è letto attraverso un buffer e non rappresenta un normale file, viene fatta almeno una lettura di un numero di byte uguale alla dimensione del chunk (di solito 8192); a seconda dei dati precedentemente messi nel buffer, la dimensione dei dati restituiti può essere maggiore della dimensione del chunk.

Elenco dei parametri

handle

Un puntatore a una resource di filesystem che è normalmente creata utilizzando fopen().

length

Fino a length numero di byte letti.

Valori restituiti

Restituisce la stringa letta o false in caso di fallimento.

Esempi

Example #1 Un semplice esempio di fread()

<?php
// copia il contenuto di un file in una stringa
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Example #2 Esempio di fread() binario

Avviso

Sui sistemi che differenziano fra file di testo e binari (ad esempio Windows) il file deve essere aperto con il parametro mode di fopen() impostato a 'b'.

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

Example #3 Esempi di fread() remoti

Avviso

Quando si legge da qualsiasi cosa non sia un normale file locale, come gli stream restituiti leggendo da file remoti o da popen() e fsockopen(), la lettura si fermerà dopo che un pacchetto si è reso disponibile. Questo significa che si evono raccogliere i dati in blocchi come illustrato nell'esempio seguente.

<?php
// For PHP 5 and up
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle
= fopen("http://www.example.com/", "rb");
if (
FALSE === $handle) {
exit(
"Failed to open stream to URL");
}

$contents = '';

while (!
feof($handle)) {
$contents .=fread($handle, 8192);
}
fclose($handle);
?>

Note

Nota:

Se si desidera ottenere il contenuto del file in una stringa, utilizzare la funzione file_get_contents() la quale è ancora più performante del codice precedente.

Nota:

Si noti che fread() legge dalla posizione attuale del puntatore al file. Usare ftell() per trovare la posizione attuale del puntatore e rewind() per riportare il puntatore all'inizio del file.

Vedere anche:

  • fwrite() - Scrive un file salvaguardando la corrispondenza binaria
  • fopen() - Apre un file o un URL
  • fsockopen() - Apre una connessione a un socket appartenente a un dominio Internet o Unix
  • popen() - Apre un puntatore ad un file di processo
  • fgets() - Prende una riga da un puntatore a file
  • fgetss() - Prende una riga da un puntatore a file ed elimina i tag HTML
  • fscanf() - Analizza l'input da un file secondo un determinato formato
  • file() - Legge l'intero file in un vettore
  • fpassthru() - Invia tutti i dati rimanenti su un puntartore a file
  • ftell() - Comunica la posizione di lettura/scrittura del puntatore al file
  • rewind() - Riavvolge la posizione di un puntatore a file