file_get_contents
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
file_get_contents — Lit tout un fichier dans une chaîne
Description
file_get_contents() est la façon recommandée pour lire
le contenu d'un fichier dans une chaîne de caractères. Elle utilisera un buffer en
mémoire si ce mécanisme est supporté par votre système, afin d'améliorer
les performances.
Note:
Si vous ouvrez une URI avec des caractères spéciaux, comme des espaces, vous
devez encoder cette URI avec la fonction urlencode().
Liste de paramètres
filename
-
Nom du fichier à lire.
use_include_path
-
Note:
La constante FILE_USE_INCLUDE_PATH
peut être utilisée pour déclencher la recherche dans le
chemin d'inclusion.
Ceci est impossible si strict typing
est activé, car FILE_USE_INCLUDE_PATH
est un
int. Utilisez true
à la place.
context
-
Une ressource de contexte valide, créée avec la fonction
stream_context_create(). Si vous n'avez
pas besoin d'utiliser un contexte particulier, vous pouvez
ignorer ce paramètre en affectant la valeur null
.
offset
-
La position à partir de laquelle on commence à lire dans le flux original.
Une position négative compte à partir de la fin du flux.
Le déplacement dans le fichier (offset
) n'est
pas supporté sur des fichiers distants. Si vous tentez de vous déplacer
dans un fichier qui n'est pas un fichier local peut fonctionner sur
les petits déplacements, mais le comportement peut ne pas être attendu
car le processus utilise le flux du buffer.
length
-
La taille maximale des données à lire. Le comportement par défaut est de
lire jusqu'à la fin du fichier. Ce paramètre s'applique sur le flux traité
par les filtres.
Valeurs de retour
Retourne les données lues ou false
si une erreur survient.
Avertissement
Cette fonction peut retourner false
, mais elle peut aussi retourner une valeur équivalent à false
.
Veuillez lire la section sur les booléens pour plus d'informations.
Utilisez l'opérateur ===
pour tester la valeur de retour exacte de cette fonction.
Erreurs / Exceptions
Émet une alerte de type E_WARNING
si,
filename
ne peut être trouvé, si le
paramètre length
est plus petit que zéro,
ou si le déplacement à la position offset
spécifié dans le flux échoue.
Quand file_get_contents() est appelé sur un dossier,
une erreur de niveau E_WARNING
est généré sur Windows,
et à partir de PHP 7.4 sur les autres systèmes d'exploitation aussi.
Exemples
Exemple #1 Lit et affiche le code HTML d'un site Web
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
Exemple #2 Recherche un fichier dans le include_path
<?php
// Si le typage strict est activé c.à.d. declare(strict_types=1);
$file = file_get_contents('./people.txt', true);
// Sinon
$file = file_get_contents('./people.txt', FILE_USE_INCLUDE_PATH);
?>
Exemple #3 Lit une section d'un fichier
<?php
// Lit 14 caractères à partir du 21ème caractère
$section = file_get_contents('./people.txt', FALSE, NULL, 20, 14);
var_dump($section);
?>
Résultat de l'exemple ci-dessus est similaire à :
string(14) "lle Bjori Ro"
Exemple #4 Utilisation des contextes de flux
<?php
// Création d'un flux
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n" .
"Cookie: foo=bar\r\n"
)
);
$context = stream_context_create($opts);
// Accès à un fichier HTTP avec les entêtes HTTP indiqués ci-dessus
$file = file_get_contents('http://www.example.com/', false, $context);
?>
Notes
Note:
Cette fonction gère les chaînes binaires.
Astuce
Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si le
gestionnaire fopen a été activé. Voyez fopen()
pour plus de détails sur la façon de spécifier le nom du fichier. Reportez-vous aux
Liste des protocoles et des gestionnaires supportés pour plus d'informations sur les capacités des différents gestionnaires,
les notes sur leur utilisation, ainsi que les informations sur les variables prédéfinies qu'elles fournissent.
Avertissement
Lorsque SSL est utilisé, le serveur IIS de Microsoft violera le protocole en fermant la connexion sans
envoyer un indicateur close_notify
. PHP le reportera en tant que "SSL: Fatal Protocol Error"
quand vous arrivez à la fin des données. Pour contourner ce le niveau de la directive
error_reporting doit être baissée pour ne pas inclure les avertissements.
PHP peut détecter automatiquement les serveur IIS bogué lors de l'ouverture
du flux en utilisant https://
et supprimera l'avertissement.
Lors de l'utilisation de fsockopen() pour créer un socket ssl://
,
c'est au développeur de détecter et supprimer l'avertissement.