107 votes

Comment puis-je obtenir le code HTML d'une page Web en PHP ?

Je veux récupérer le code HTML d'un lien (page web) dans PHP. Par exemple, si le lien est

https://stackoverflow.com/questions/fr/

alors je veux le code HTML de la page qui est servie. Je veux récupérer ce code HTML et le stocker dans une variable PHP.

Comment puis-je faire ça ?

165voto

Greg Points 132247

Si votre serveur PHP autorise url fopen wrappers alors la façon la plus simple est :

$html = file_get_contents('https://stackoverflow.com/questions/ask');

Si vous avez besoin de plus de contrôle, vous devriez regarder les fonctions cURL :

$c = curl_init('https://stackoverflow.com/questions/ask');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(... other options you want...)

$html = curl_exec($c);

if (curl_error($c))
    die(curl_error($c));

// Get the status code
$status = curl_getinfo($c, CURLINFO_HTTP_CODE);

curl_close($c);

25voto

Revan343 Points 21

Aussi si vous voulez manipuler la page récupérée d'une manière ou d'une autre, vous pouvez essayer un parseur php DOM. Je trouve PHP Simple HTML DOM Parser très facile à utiliser.

5voto

Solutioner Points 577

Voici deux façons différentes et simples d'obtenir du contenu à partir de l'URL :

1) le premier procédé

Activez Allow_url_include depuis votre hébergement (php.ini ou quelque part)

<?php
$variableee = readfile("http://example.com/");
echo $variableee;
?> 

ou

2)la seconde méthode

Activer php_curl, php_imap et php_openssl

<?php
// you can add anoother curl options too
// see here - http://php.net/manual/en/function.curl-setopt.php
function get_dataa($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,false);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
  curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$variableee = get_dataa('http://example.com');
echo $variableee;
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X