file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Transmite un fichero completo a una cadena
Descripción
file_get_contents() es la manera preferida de transmitir el
contenido de un fichero a una cadena. Para mejorar el rendimiento, utiliza técnicas
de mapeado de memoria si sistema operativo lo admite..
Nota:
Si se está abriendo un URI con caracteres especiales, tales como espacios,
se necesita codificar el URI con urlencode().
Parámetros
-
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.
Esto no es posible si está habilitada la tipificación esctricta,
ya que FILE_USE_INCLUDE_PATH
es de tipo
int. Utilice true
en su lugar.
-
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.
Los índices negativos inician la cuenta desde el final del flujo.
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.
Valores devueltos
Esta función devuelve los datos leídos o false
en caso de error.
AdvertenciaEsta 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.
Errores/Excepciones
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.
Ejemplos
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('./people.txt', FALSE, 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);
?>
Notas
Nota: Esta función es
segura binariamente.
SugerenciaSe puede emplear un URL como
nombre de fichero con esta función si las envolturas de fopen han sido activadas.
Véase fopen() para más información de cómo especificar el nombre
de fichero. Véanse las Protocolos y Envolturas soportados; continen enlaces con información
sobre las diferentes capacidades que tienen las envolturas, notas sobre su empleo,
e información de cualquier variable predefinida que podría
proporcionarse.
AdvertenciaCuando 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 pueden detectar servidores IIS con este problema cuando se
abre un flujo 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.