转自: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;
}