(PHP 4 >= 4.3.0, PHP 5)
file_get_contents — Transmite un fichero entero a una cadena
$filename
[, bool $use_include_path
= false
[, resource $context
[, int $offset
= -1
[, int $maxlen
]]]] )
Esta función es similar a file(), excepto que
file_get_contents() devuelve el fichero a un
string, comenzando por el offset
especificado
hasta maxlen
bytes. Si falla,
file_get_contents() devolverá FALSE
.
file_get_contents() es la manera preferida de transmitir el contenido de un fichero a una cadena. Usa técnicas de mapeado de memoria, si está soportado por su sistema operativo, para mejorar el rendimiento.
Nota:
Si se está abriendo un URI con caracteres especiales, tales como espacios, se necesita codificar el URI con urlencode().
filename
Nombre del fichero a leer.
use_include_path
Nota:
A partir de PHP 5, se puede usar la constante
FILE_USE_INCLUDE_PATH
para lanzar la búsqueda en include_path.
context
Un recurso de contexto válido creado con
stream_context_create(). Si no se necesita usar un
contexto a medida, se puede saltar este parámetro usando NULL
.
offset
El índice donde comienza la lectura en el flujo original.
La búsqueda de (offset
) no está soportada con ficheros remotos.
Intentar buscar un fichero no local puede funcionar con índices pequeños, pero
es impredecible debido a que trabaja sobre el flujo almacenado en buffer.
maxlen
La longitud máxima de los datos leídos. De manera predeterminada se lee hasta que se alcance el final del fichero. Observe que este parámetro se aplica al flujo procesado por los filtros.
Esta función devuelve los datos leídos o FALSE
en caso de error.
Esta función puede
devolver el valor booleano FALSE
, pero también puede devolver un valor no booleano que se
evalúa como FALSE
. Por favor lea la sección sobre Booleanos para más información. Use
el operador === para comprobar el valor devuelto por esta
función.
Se genera un error de nivel E_WARNING
si filename
no se pudo encontrar, maxlength
es menor de cero, o si falla la búsqueda del offset
especificado en el flujo.
Ejemplo #1 Obtiene y muestra el código fuente de la página de inicio de un sitio web
<?php
$página_inicio = file_get_contents('http://www.example.com/');
echo $página_inicio;
?>
Ejemplo #2 Buscar dentro de include_path
<?php
// <= PHP 5
$fichero = file_get_contents('./gente.txt', true);
// > PHP 5
$fichero = file_get_contents('./gente.txt', FILE_USE_INCLUDE_PATH);
?>
Ejemplo #3 Leer una sección de un fichero
<?php
// Leer 14 caracteres comenzando desde el carácter número 21
$sección = file_get_contents('./gente.txt', NULL, NULL, 20, 14);
var_dump($sección);
?>
El resultado del ejemplo sería algo similar a:
string(14) "lle Bjori Ro"
Ejemplo #4 Usar contextos de flujo
<?php
// Crear un flujo
$opciones = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$contexto = stream_context_create($opciones);
// Abre el fichero usando las cabeceras HTTP establecidas arriba
$fichero = file_get_contents('http://www.example.com/', false, $contexto);
?>
Versión | Descripción |
---|---|
5.1.0 |
Se añadieron los parámetros offset y
maxlen .
|
5.0.0 | Se añadió el soporte de contextos. |
Nota: Esta función es segura binariamente.
Se puede usar una dirección URL como nombre de archivo con esta función si los fopen wrappers han sido activados. Consulte fopen() para más información de como especificar el nombre de fichero. Consulte Protocolos y Envolturas soportados para ver enlaces con información sobre las diferentes habilidades que los wrappers tienen, notas de uso e información de cualquier variables predefinidas que pueden usarse.
Cuando se usa SSL, Microsoft IIS violará el protocolo, cerrando la conexión sin mandar un indicador close_notify. PHP avisará de esto con este mensaje "SSL: Fatal Protocol Error", cuando llegue al final de los datos. Una solución a este problema es bajar el nivel de aviso de errores del sistema para que no incluya advertencias. PHP 4.3.7 y versiones posteriores detectan servidores IIS con este problema cuando se hace streaming usando https:// y suprime la advertencia. Si usáis la función fsockopen() para crear un socket ssl://, tendréis que suprimir la advertencia explicitamente.