php获取网页内容的方法--(转载)
php
方法1: 用
file_get_contents
以get方式获取内容
<?php
$url
=
\'http://www.domain.com/?para=123\'
;
$html
=
file_get_contents
(
$url
);
echo
$html
;
?>
方法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
);
如果需要再传递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
,
\'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
);
?>
方法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
;
?>
方法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;
}
?>
方法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
;
}
?>
方法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
;
?>
注明:本文转载自https://www.oschina.net/code/snippet_861770_19638;
版权声明:本文为ylcxBlog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。