Plusieurs façons d'obtenir du contenu Web en PHP
Méthode 1 : Utilisez file_get_contents pour obtenir le contenu en mode obtenir .
<?php $url='http://www.domain.com/?para=123'; $html= file_get_contents($url); echo$html; ?>
Méthode 2 : Utilisez la fonction file_get_contents pour obtenir l'url en mode post.
<?php $url= 'http://www.domain.com/test.php?id=123'; $data= array('foo'=> 'bar'); $data= http_build_query($data); $opts= array( 'http'=> array( 'method'=> 'POST', 'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content'=> $data ) ); $ctx= stream_context_create($opts); $html= @file_get_contents($url,'',$ctx);
Si vous devez à nouveau transmettre les données des cookies, remplacez simplement
'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n",
par
'header'=>"Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " .strlen($data) . "\r\n". "cookie:cookie1=c1;cookie2=c2\r\n";
.
Méthode 3 : utilisez fopen pour ouvrir l'URL et obtenir le contenu en mode obtenir.
<?php $fp= fopen($url,'r'); $header= stream_get_meta_data($fp);//获取报头信息 while(!feof($fp)) { $result.= fgets($fp, 1024); } echo"url header: {$header} <br>": echo"url body: $result"; fclose($fp); ?>
Recommandations associées : "Tutoriel de démarrage PHP"
Méthode 4 : Utilisez fopen pour ouvrir l'URL et obtenir le contenu en mode publication.
<?php $data= array('foo2'=> 'bar2','foo3'=>'bar3'); $data= http_build_query($data); $opts= array( 'http'=> array( 'method'=> 'POST', 'header'=>"Content-type: application/x-www-form-urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content'=> $data ) ); $context= stream_context_create($opts); $html= fopen('http://www.test.com/zzzz.php?id=i3&id2=i4','rb',false, $context); $w=fread($html,1024); echo$w; ?>
Méthode 5 : utilisez la fonction fsockopen pour ouvrir l'URL et obtenir les données complètes en mode get, y compris l'en-tête et le corps.
<?php functionget_url ($url,$cookie=false) { $url= parse_url($url); $query= $url[path]."?".$url[query]; echo"Query:".$query; $fp= fsockopen($url[host],$url[port]?$url[port]:80 , $errno,$errstr, 30); if(!$fp) { returnfalse; }else{ $request= "GET $query HTTP/1.1\r\n"; $request.= "Host: $url[host]\r\n"; $request.= "Connection: Close\r\n"; if($cookie)$request.="Cookie: $cookie\n"; $request.="\r\n"; fwrite($fp,$request); while(!@feof($fp)) { $result.= @fgets($fp, 1024); } fclose($fp); return$result; } } //获取url的html部分,去掉header functionGetUrlHTML($url,$cookie=false) { $rowdata= get_url($url,$cookie); if($rowdata) { $body=stristr($rowdata,"\r\n\r\n"); $body=substr($body,4,strlen($body)); return$body; } returnfalse; } ?>
Méthode 6 : Utilisez la fonction fsockopen pour ouvrir l'url et obtenir les données complètes en mode POST, y compris l'en-tête et le corps.
<?php functionHTTP_Post($URL,$data,$cookie,$referrer="") { // parsing the given URL $URL_Info=parse_url($URL); // Building referrer if($referrer=="")// if not given use this script as referrer $referrer="111"; // making string from $data foreach($dataas $key=>$value) $values[]="$key=".urlencode($value); $data_string=implode("&",$values); // Find out which port is needed - if not given use standard (=80) if(!isset($URL_Info["port"])) $URL_Info["port"]=80; // building POST-request: $request.="POST ".$URL_Info["path"]." HTTP/1.1\n"; $request.="Host: ".$URL_Info["host"]."\n"; $request.="Referer: $referer\n"; $request.="Content-type: application/x-www-form-urlencoded\n"; $request.="Content-length: ".strlen($data_string)."\n"; $request.="Connection: close\n"; $request.="Cookie: $cookie\n"; $request.="\n"; $request.=$data_string."\n"; $fp= fsockopen($URL_Info["host"],$URL_Info["port"]); fputs($fp,$request); while(!feof($fp)) { $result.= fgets($fp, 1024); } fclose($fp); return$result; } ?>
Méthode 7 : Utiliser la bibliothèque curl Avant d'utiliser la bibliothèque curl, vous devrez peut-être vérifier si l'extension curl a été activée dans php.ini.
<?php $ch= curl_init(); $timeout= 5; curl_setopt ($ch, CURLOPT_URL, 'http://www.domain.com/'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents= curl_exec($ch); curl_close($ch); echo$file_contents; ?>
Voici 3 méthodes d'utilisation de php pour obtenir le code source d'une page Web et explorer le contenu Web, que nous pouvons choisir en fonction des besoins réels.
1. Utilisez file_get_contents pour obtenir le code source de la page Web
Cette méthode est la plus couramment utilisée et ne nécessite que deux lignes de code. Elle est très simple et pratique.
Code de référence :
<?php $fh= file_get_contents('http://www.webkaka.com/'); echo $fh; ?>
2. Utilisez fopen pour obtenir le code source de la page Web
Beaucoup de gens utilisent cette méthode, mais elle contient beaucoup de code.
Code de référence :
<?php $fh = fopen('http://www.webkaka.com/', 'r'); if($fh){ while(!feof($fh)) { echo fgets($fh); } } ?>
3. Utilisez curl pour obtenir le code source d'une page Web
L'utilisation de curl pour obtenir le code source d'une page Web est souvent utilisée par des personnes ayant des exigences plus élevées, telles que Lorsque vous devez explorer le contenu d'une page Web, vous pouvez également obtenir les informations d'en-tête de la page Web, l'utilisation du codage ENCODING, l'utilisation de USERAGENT, etc.
Code de référence un :
<?php // 创建一个新cURL资源 $ch = curl_init(); // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, "http://www.webkaka.com/"); curl_setopt($ch, CURLOPT_HEADER, false); // 抓取URL并把它传递给浏览器 data=curlexec(ch); echo $data; //关闭cURL资源,并且释放系统资源 curl_close($ch); ?>
Code de référence deux :
<?php $szUrl = "http://www.webkaka.com/"; $UserAgent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; $curl = curl_init(); curl_setopt(curl,CURLOPTURL,szUrl); curl_setopt($curl, CURLOPT_HEADER, 0); //0表示不输出Header,1表示输出 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_ENCODING, ''); curl_setopt(curl,CURLOPTUSERAGENT,UserAgent); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); data=curlexec(curl); echo $data; //echo curl_errno($curl); //返回0时表示程序执行成功 如何从curl_errno返回值获取错误信息
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!