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

来源:互联网 发布:淘宝v5会员消费多少钱 编辑:程序博客网 时间:2024/06/07 03:58

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


原创粉丝点击