(PHP 4, PHP 5, PHP 7)
fread — Lectura de un fichero en modo binario seguro
$handle
, int $length
) : string
fread() lee hasta
length
bytes desde el puntero al fichero
referenciado por handle
. La lectura termina tan pronto como
se encuentre una de las siguientes condiciones:
length
bytes han sido leídos
Devuelve la cadena leída o FALSE
en caso de error.
Ejemplo #1 Un ejemplo sencillo de fread()
<?php
// poner el contenido de un fichero en una cadena
$nombre_fichero = "/usr/local/algo.txt";
$gestor = fopen($nombre_fichero, "r");
$contenido = fread($gestor, filesize($nombre_fichero));
fclose($gestor);
?>
Ejemplo #2 Ejemplo de lectura binaria de fread()
En sistemas en los que se diferencia entre archivos binarios y de texto (esto es, Windows) el fichero debe ser abierto con 'b' incluida en el parámetro modo de fopen().
<?php
$filename = "c:\\files\\imagen.gif";
$gestor = fopen($filename, "rb");
$contenido = fread($gestor, filesize($filename));
fclose($gestor);
?>
Ejemplo #3 Ejemplos de lectura remota con fread()
Cuando se lee desde algo que no es un fichero local normal, como los flujos devueltos cuando se leen ficheros remotos o desde popen() y fsockopen(), la lectura se detendrá después de que esté disponible un paquete. Esto significa que debería reuinir la información en trozos como se muestra en los ejemplos de abajo.
<?php
// Para PHP 5 y superior
$gestor = fopen("http://www.example.com/", "rb");
$contenido = stream_get_contents($gestor);
fclose($gestor);
?>
<?php
$gestor = fopen("http://www.example.com/", "rb");
f (FALSE === $gestor) {
exit("Falló la apertura del flujo al URL");
}
$contenido = '';
while (!feof($gestor)) {
$contenido .= fread($gestor, 8192);
}
fclose($gestor);
?>
Nota:
Si sólo quiere poner el contenido de un fichero en una cadena, use file_get_contents() ya que tiene mucho mejor rendimiento que el código de arriba.
Nota:
Observe que fread() lee desde la posción actual del puntero al fichero. Use ftell() para encontrar la posición actual del puntero y rewind() para rebobinar la posición del puntero.