您的位置:首页 > 编程语言 > PHP开发

使用PHP读取远程文件的四种方法

2013-08-09 12:54 736 查看
转自:http://www.qiandabao.com/wdgz/47.html

使用PHP读取远程文件的四种方法

1 fopen()

2 file_get_contents()

3 curl

4 socket

fopen()和file_get_contents()需要在php.ini配置文件中设置allow_url_open = on

fopen():

$handle = fopen("http://www.example.com/", "rb");
$contents = "";
while (!feof($handle)) {
 $contents .= fread($handle, 8192);
}
fclose($handle);


file_get_contents():

$contents = file_get_contents("http://www.example.com/");


Curl:

if (function_exists('curl_init')) {
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
   curl_setopt($ch, CURLOPT_HEADER, 0);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1;)');
   $contents = curl_exec($ch);
   curl_close($ch);
}


Socket:

function getRemoteFile($url) {
    $parsedUrl = parse_url($url);
	$host = $parsedUrl['host'];
	if (isset($parsedUrl['path'])) {
	 	$path = $parsedUrl['path'];
	} else {
	    $path = '/';
    }

    if (isset($parsedUrl['query'])) {
	    $path .= '?'.$parsedUrl['query'];
	}

	if (isset($parsedUrl['port'])) {
	    $port = $parsedUrl['port'];
    } else {
	  	$port = 80;
    }

    $timout = 10;
    $response = '';
    $fp = @fsockopen($host, $port, $errno, $errstr, $timout);

    if (!$fp) {
        echo "Connect to $url failed";
    } else {
        fputs($fp, "Get $path HTTP/1.0\r\n".
        "Host: $host\r\n".
        "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1;) \r\n".
        "Accept:*/*\r\n".
        "Accept-Language: zh-CN, zh;q=0.5\r\n".
        "Accept-Charset: GB-2312, utf-8;q=0.7,*'q=0.7\r\n".
        "Keep_Alive: 300\r\n".
        "Connection: keep-alive\r\n".
        "Referer: http://$url\r\n\r\n");         while ($line = fread($fp, 4096)) {
		    $response .= $line;
        }
		fclose($fp);
        $pos = strpos($response, "\r\n\r\n");
        $response = substr($response, $pos +4);
    }
    return $response;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: