当前位置:编程学习 > php >>

四种方法PHP中获取远程文件的源代码

1.php用file_get_contents获取远程文件
<?php
$url = 'https://www.zzzyk.com/';
$contents = file_get_contents($url);
//如果出现中文乱码使用下面代码
//$getcontent = iconv(“gb2312″, “utf-8″,file_get_contents($url));
//echo $getcontent;
echo $contents;

?>

使用file_get_contents和fopen必须空间开启allow_url_fopen。
方法:编辑php.ini,设置 allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。

建议打开URL时使用file_get_contents()方法,可优化打开速度


很简单的一句话:
$data = file_get_contents("http://www.zzzyk.com/");
如果要限制超时时间,需要使用到它的$context参数
$opts = array('http' => array('timeout' => 30) );
$context = stream_context_create($opts);
$data = file_get_contents("http://www.yizuotu.net/", false, $context);
其中,第二个参数$use_include_path表示在php.ini设置的include_path中查找文件,使用false即可。
此外,本函数也可以发送POST数据:
$opts = array('http' => array(
'method' => 'POST',
'content' => 'x=1&y=2'));
$context = stream_context_create($opts);
$data = file_get_contents("http://www.226511.com/", false, $context);
相对来说第二种方法比较快捷。以上两种方法需要php.ini设置allow_url_fopen=On。



2.php用curl读取远程文件

<?php

$url = "https://www.yizuotu.net/";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.”:”.US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>
使用curl必须空间开启curl。
方法:WIN下修改php.ini,将extension=php_curl.dll前面的分号去掉
Linux下要安装curl扩展。

url也可用来发送POST数据及发送HTTP请求头信息,以下是另一用例:
$curl = curl_init();
curl_setopt_array($curl, array(

CURLOPT_URL => "https://zzzyk.com/",

CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POSTFIELDS => array('name'=>'yizuotu', 'password'=>'net'),
CURLOPT_POST => 1,
CURLOPT_HTTPHEADER => array('Host:www.zzzyk.com', 'Referer:www.zzzyk.com'),
);
$data = curl_exec($curl);
curl_close($curl);

3.php用fopen->fread->fclose获取远程文件
<?php
$handle = fopen ("https://www.226511.com/", "rb");

$contents="";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0)
{break;}
$contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?>


4. php用fsockopen, fwrite, fread读取远程文件
if($fp = fsockopen('www.xiaoyaxiao.com', 80, $errno, $errstr, 30)) {
$header = "GET /ip.php?ip=$ip HTTP/1.0rn";
$header .= "HOST: www.xiaoyaxiao.comrn";
$header .= "Connection: Closernrn";
fwrite($fp, $header);
stream_set_timeout($fp, 2);
while(!feof($fp))
$data .= fread($fp, 128);
fclose($fp);
}
本方法需要开启php_sockets扩展
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,