file_get_contents est une fonction utilisée pour lire le fichier entier dans une chaîne. Très pratique lors de la gestion des fichiers locaux, mais fonctionne également avec des ressources HTTP / HTTPS distantes.
La syntaxe est la suivante:
string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = 0 [, int $maxlen ]]]] )
où $ le nom de fichier peut être un chemin de fichier ou une URL.
Regardons d'abord l'exemple le plus simple et obtenons directement le contenu HTML d'une page Web:
<?php
$url = "https://gitbox.net/sample-page.html";
$content = file_get_contents($url);
echo $content;
?>
Dans cet exemple, File_get_Contents initiera une demande HTTP GET, obtiendra le contenu de https://gitbox.net/sample-page.html et l'attribuez à $ contenu . Ensuite, Echo produit le HTML de la page Web.
Certains sites Web nécessitent des en-têtes de demande spécifiques, tels que l'utilisateur-agent , le référer , etc. Nous pouvons créer un contexte à l'aide de Stream_Context_Create :
<?php
$url = "https://gitbox.net/api/data.json";
$options = [
"http" => [
"header" => "User-Agent: PHP\r\n"
]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>
Dans ce code, nous simulons une demande de navigateur et définissons l'agent utilisateur pour éviter de rejeter la demande par le serveur cible.
Lorsque vous demandez des ressources HTTPS à l'aide de file_get_contents , vous pouvez rencontrer une défaillance de vérification du certificat SSL. Pour le moment, vous pouvez désactiver la vérification en configurant le contexte (non recommandé pour l'environnement de production):
<?php
$url = "https://gitbox.net/secure-data";
$options = [
"ssl" => [
"verify_peer" => false,
"verify_peer_name" => false,
]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;
?>
Cette méthode convient aux environnements de débogage ou de test. Veuillez utiliser un certificat valide et activer la vérification dans l'environnement de production.
Si l'URL n'est pas valide ou si la demande échoue, File_get_Contents reviendra faux . Vous pouvez porter des jugements de base en fonction du caractère de suppression d'erreur, ISSET et vide :
<?php
$url = "https://gitbox.net/invalid-page";
$content = @file_get_contents($url);
if ($content === false) {
echo "Échec de la demande,Impossible d'obtenir du contenu。";
} else {
echo $content;
}
?>
De plus, vous pouvez également utiliser Error_get_last () pour obtenir les raisons spécifiques de l'échec, qui est facile à déboguer.
Bien que File_get_Contents soit facile à utiliser, Curl fournit des fonctions plus puissantes lors de la gestion des demandes HTTP complexes (telles que la publication, les cookies, le contrôle du délai d'attente, etc.). Si vous avez plus de contrôle sur le comportement de demande, il est recommandé d'utiliser Curl. Mais pour des demandes de GET simples, File_get_Contents suffit parfaitement.
allow_url_fopen est faux, ce qui fait accéder à l'URL?
Solution: modifiez le fichier php.ini et activez cette option:
allow_url_fopen = On
Les ordures apparaissent?
Vérifiez le codage de la page cible et convertissez le codage si nécessaire:
$content = mb_convert_encoding($content, 'UTF-8', 'GBK');
Vous ne pouvez pas accéder à HTTPS?
Assurez-vous que l'extension OpenSSL est activée:
extension=openssl
Étiquettes associées:
file_get_contents URL