您所在的位置:小祥子 » 编程 » PHP » 正文

PHP打开远程文件方法函数

时间:2015-02-13 编辑:本站 来源:本站原创

以sock方式打开远程文件,代码如下

function sockOpenUrl($url,$method='GET',$postValue='',$Referer='Y'){
 if($Referer=='Y'){
  $Referer=$url;
 }
 $method = strtoupper($method);
 if(!$url){
  return '';
 }elseif(!ereg("://",$url)){
  $url="http://$url";
 }
 $urldb=parse_url($url);
 $port=$urldb[port]?$urldb[port]:80;
 $host=$urldb[host];
 $query='?'.$urldb[query];
 $path=$urldb[path]?$urldb[path]:'/';
 $method=$method=='GET'?"GET":'POST';

 $fp = fsockopen($host, 80, $errno, $errstr, 30);
 if(!$fp)
 {
  echo "$errstr ($errno)<br />\n";
 }
 else
 {
  $out = "$method $path$query HTTP/1.1\r\n";
  $out .= "Host: $host\r\n";
  $out .= "Cookie: c=1;c2=2\r\n";
  $out .= "Referer: $Referer\r\n";
  $out .= "Accept: */*\r\n";
  $out .= "Connection: Close\r\n";
  if ( $method == "POST" ) {
   $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
   $length = strlen($postValue);
   $out .= "Content-Length: $length\r\n";
   $out .= "\r\n";
   $out .= $postValue;
  }else{
   $out .= "\r\n";
  }
  fwrite($fp, $out);
  while (!feof($fp)) {
   $file.= fgets($fp, 256);
  }
  fclose($fp);
  if(!$file){
   return '';
  }
  $ck=0;
  $string='';
  $detail=explode("\r\n",$file);
  foreach( $detail AS $key=>$value){
   if($value==''){
    $ck++;
    if($ck==1){
     continue;
    }
   }
   if($ck){
    $stringdb[]=$value;
   }
  }
  $string=implode("\r\n",$stringdb);
  //$string=preg_replace("/([\d]+)(.*)0/is","\\2",$string);
  return $string;
 }
}

关键词:远程 文件 方法 函数