Home > Backend Development > PHP Tutorial > PHP获取网页内容的几种方法代码分享

PHP获取网页内容的几种方法代码分享

WBOY
Release: 2016-06-20 13:01:27
Original
1002 people have browsed it

PHP获取网页内容的几种方法代码分享

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

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



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

<?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);
Copy after login



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

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
                 "Content-Length: " . strlen($data) . "\r\n",
Copy after login


修改为

'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
                "Content-Length: " . strlen($data) . "\r\n".
                "cookie:cookie1=c1;cookie2=c2\r\n" ;
Copy after login


即可

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

<?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);
?>
Copy after login



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

<?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;
?>
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, '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;
?>
Copy after login

 


Related labels:
php
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template