PHP 读取远程文件的解决办法
内容摘要
这篇文章主要为大家详细介绍了PHP 读取远程文件的简单示例,具有一定的参考价值,可以用来参考一下。
PHP读取远程文件,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如
PHP读取远程文件,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如
文章正文
这篇文章主要为大家详细介绍了PHP 读取远程文件的简单示例,具有一定的参考价值,可以用来参考一下。
PHP读取远程文件,对此感兴趣的朋友,看看idc笔记做的技术笔记。经测试代码如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | <code class = "php" > /** * PHP读取远程文件 * * @param * @author php教程 www.idcnote.com **/ function urlfopen( $url , $limit = 0, $post = '' , $cookie = '' , $bysocket = FALSE , $ip = '' , $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE' ) { $return = '' ; $matches = parse_url ( $url ); $host = $matches [ 'host' ]; $path = $matches [ 'path' ] ? $matches [ 'path' ].(isset( $matches [ 'query' ]) ? '?' . $matches [ 'query' ] : '' ) : '/' ; $port = ! empty ( $matches [ 'port' ]) ? $matches [ 'port' ] : 80; if ( $post ) { $out = "POST $path HTTP/1.0\r\n" ; $out .= "Accept: */*\r\n" ; $out .= "Accept-Language: zh-cn\r\n" ; $boundary = $encodetype == 'URLENCODE' ? '' : ';' . substr ( $post , 0, trim( strpos ( $post , "\n" ))); $out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencoded\r\n" : "Content-Type: multipart/form-data$boundary\r\n" ; $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n" ; $out .= "Host: $host\r\n" ; $out .= 'Content-Length: ' . strlen ( $post ). "\r\n" ; $out .= "Connection: Close\r\n" ; $out .= "Cache-Control: no-cache\r\n" ; $out .= "Cookie: $cookie\r\n\r\n" ; $out .= $post ; } else { $out = "GET $path HTTP/1.0\r\n" ; $out .= "Accept: */*\r\n" ; $out .= "Accept-Language: zh-cn\r\n" ; $out .= "User-Agent: $_SERVER[HTTP_USER_AGENT]\r\n" ; $out .= "Host: $host\r\n" ; $out .= "Referer: \r\n" ; $out .= "Connection: Close\r\n" ; $out .= "Cookie: $cookie\r\n\r\n" ; } $fp = @ fsockopen (( $ip ? $ip : $host ), $port , $errno , $errstr , $timeout ); if (! $fp ) { return '' ; } else { stream_set_blocking( $fp , $block ); stream_set_timeout( $fp , $timeout ); @fwrite( $fp , $out ); $status = stream_get_meta_data( $fp ); if (! $status [ 'timed_out' ]) { while (! feof ( $fp )) { if (( $header = @ fgets ( $fp )) && ( $header == "\r\n" || $header == "\n" )) { break ; } } $stop = false; while (! feof ( $fp ) && ! $stop ) { $data = fread ( $fp , ( $limit == 0 || $limit > 8192 ? 8192 : $limit )); $return .= $data ; if ( $limit ) { $limit -= strlen ( $data ); $stop = $limit <= 0; } } } @fclose( $fp ); return $return ; } } /*** 来自php教程(www.idcnote.com) ***/ </code> |
注:关于PHP 读取远程文件的简单示例的内容就先介绍到这里,更多相关文章的可以留意
代码注释