file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Lee todo un fichero en una cadena
Descripción
file_get_contents() es el método recomendado para leer
el contenido de un fichero en una string. Utilizará un buffer en
memoria si este mecanismo es soportado por el sistema, con el fin de mejorar
el rendimiento.
Nota:
Si se abre una URI con caracteres especiales, como espacios, es necesario
codificar esta URI con la función urlencode().
Parámetros
filename
-
Nombre del fichero a leer.
use_include_path
-
Nota:
La constante FILE_USE_INCLUDE_PATH
puede ser utilizada para activar la búsqueda en el
ruta de inclusión.
Esto no es posible si strict typing
está activado, ya que FILE_USE_INCLUDE_PATH
es un
int. Utilice true
en su lugar.
context
-
Un recurso de contexto válido, creado con la función
stream_context_create(). Si no es necesario
utilizar un contexto específico, este parámetro puede ser omitido
asignándole el valor null
.
offset
-
La posición desde la cual se comienza a leer en el flujo original.
Una posición negativa cuenta desde el final del flujo.
El desplazamiento en el fichero (offset
) no es
soportado en ficheros remotos. Si se intenta desplazarse en un fichero
que no es local puede funcionar en pequeños desplazamientos, pero el
comportamiento puede no ser el esperado ya que el proceso utiliza el
flujo del buffer.
length
-
El tamaño máximo de datos a leer. El comportamiento por defecto es leer
hasta el final del fichero. Este parámetro se aplica al flujo procesado
por los filtros.
Valores devueltos
Devuelve los datos leídos o false
si ocurre un error.
Advertencia
Esta función puede retornar false
, pero también puede retornar un valor equivalente a false
.
Por favor, lea la sección sobre los booleanos para más información.
Utilice el operador ===
para probar el valor de retorno exacto de esta función.
Errores/Excepciones
Genera una advertencia de tipo E_WARNING
si,
filename
no puede ser encontrado, si el
parámetro length
es menor que cero,
o si el desplazamiento a la posición offset
especificado en el flujo falla.
Cuando file_get_contents() es llamado sobre un directorio,
se genera un error de nivel E_WARNING
en Windows,
y a partir de PHP 7.4 en otros sistemas operativos también.
Ejemplos
Ejemplo #1 Lee y muestra el código HTML de un sitio web
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
Ejemplo #2 Busca un fichero en el include_path
<?php
// Si el tipado estricto está activado c.à.d. declare(strict_types=1);
$file = file_get_contents('./people.txt', true);
// De lo contrario
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
Ejemplo #3 Lee una sección de un fichero
<?php
// Lee 14 caracteres a partir del 21º carácter
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
var_dump($section);
?>
Resultado del ejemplo anterior es similar a :
string(14) "lle Bjori Ro"
Ejemplo #4 Uso de contextos de flujo
<?php
// Creación de un flujo
$opts = [
'http'=> [
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n",
]
];
$context = stream_context_create($opts);
// Acceso a un fichero HTTP con los encabezados HTTP indicados arriba
$file = file_get_contents('http://www.example.com/', false, $context);
?>
Notas
Nota:
Esta función maneja strings binarios.
Sugerencia
Puede utilizar una URL como nombre de archivo con esta función, si el
gestor fopen ha sido activado. Véase fopen()
para más detalles sobre cómo especificar el nombre del archivo. Consulte
Protocolos y Envolturas soportados para más información sobre las capacidades de los diferentes gestores,
las notas sobre su uso, así como la información sobre las variables predefinidas que proporcionan.
Advertencia
Cuando SSL es utilizado, el servidor IIS de Microsoft violará el protocolo al cerrar la conexión sin
enviar un indicador close_notify
. PHP lo reportará como "SSL: Fatal Protocol Error"
cuando se llegue al final de los datos. Para evitar esto, el nivel de la directiva
error_reporting debe ser bajado para no incluir los avisos.
PHP puede detectar automáticamente los servidores IIS defectuosos al abrir
el flujo utilizando https://
y suprimirá el aviso.
Al utilizar fsockopen() para crear un socket ssl://
,
es responsabilidad del desarrollador detectar y suprimir el aviso.