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 es segura para
sistemas 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.