Home > php教程 > PHP源码 > PHP获取网页内容的几种方法

PHP获取网页内容的几种方法

PHP中文网
Release: 2016-05-25 17:07:08
Original
1130 people have browsed it

方法1: 用file_get_contents 以get方式获取内容

<?php
$url=&#39;http://www.domain.com/?para=123&#39;;
$html = file_get_contents($url);
echo $html;
?>
Copy after login

方法2:用file_get_contents函数,以post方式获取url

<?php
$url = &#39;http://www.domain.com/test.php?id=123&#39;;
$data = array (&#39;foo&#39; => &#39;bar&#39;);
$data = http_build_query($data);
 
$opts = array (
&#39;http&#39; => array (
   &#39;method&#39; => &#39;POST&#39;,
   &#39;header&#39;=> "Content-type: application/x-www-form-urlencoded\r\n" .
                     "Content-Length: " . strlen($data) . "\r\n",
   &#39;content&#39; => $data
)
);
$ctx = stream_context_create($opts);
$html = @file_get_contents($url,&#39;&#39;,$ctx);
Copy after login

如果需要再传递cookie数据,则把

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .

"Content-Length: " . strlen($data) . "\r\n",

修改为

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .

"Content-Length: " . strlen($data) . "\r\n".

"cookie:cookie1=c1;cookie2=c2\r\n" ;

即可

方法3: 用fopen打开url, 以get方式获取内容

<?php
$fp = fopen($url, &#39;r&#39;);
$header = stream_get_meta_data($fp);//获取报头信息
while(!feof($fp)) {
$result .= fgets($fp, 1024);
}
echo "url header: {$header} <br>":
echo "url body: $result";
fclose($fp);
?>
Copy after login

方法4: 用fopen打开url, 以post方式获取内容

<?php
$data = array (&#39;foo2&#39; => &#39;bar2&#39;,&#39;foo3&#39;=>&#39;bar3&#39;);
$data = http_build_query($data);
 
$opts = array (
&#39;http&#39; => array (
&#39;method&#39; => &#39;POST&#39;,
&#39;header&#39;=> "Content-type: application/x-www-form-urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
&#39;content&#39; => $data
)
);
 
$context = stream_context_create($opts);
$html = fopen(&#39;http://www.test.com/zzzz.php?id=i3&id2=i4&#39;,&#39;rb&#39; ,false, $context);
$w=fread($html,1024);
echo $w;
?>
Copy after login

方法5:用fsockopen函数打开url,以get方式获取完整的数据,包括header和body

<?php
function get_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) {
return false;
} 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
function GetUrlHTML($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;
}
 
   return false;
}
?>
Copy after login

方法6:用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

<?php
function HTTP_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($data as $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;
}
 
?>
Copy after login

方法7:使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, &#39;http://www.domain.com/&#39;);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
 
echo $file_contents;
?>
Copy after login


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template