几种php访问url的方法

1、fopen方式

//访问指定URL函数

function access_url($url)

{        if($url=='') return false;      

$fp = fopen($url, 'r') or exit('Open url faild!');       

if($fp){       while(!feof($fp)) {          

 $file .= fgets($fp) . "";       }      

 fclose($fp);        }     

 return $file;   }

2、file_get_contents方式 (打开远程文件的时候会造成CPU飙升。file_get_contents其实也可以post)

//以post方式获取url

$data = array ('foo' => 'bar');

$data = http_build_query($data);

$opts['http'] = array (

  'method' => 'POST',

  'header'=> "Content-type:application/x-www-form-urlencodedrn".

  "Content-Length: " . strlen($data) . "rn",

  'content' => $data

);

$context = stream_context_create($opts);

$html = file_get_contents('http://localhost/test.html', false, $context);

echo $html;

3、curl方式

function curl_file_get_contents($durl){ 

    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_URL, $durl); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回   

    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回   

    $data = curl_exec($ch); 

    curl_close($ch); 

    return $data; 

}

4、fsockopen方式(只能获取网站主页信息,其他页面不可以)

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);    

(!$fp) {    

   echo "$errstr ($errno)<br />\n";    

}else {    

   $out="GET / HTTP/1.1\r\n";    

   $out.="Host: www.example.com\r\n";    

   $out.="Connection: Close\r\n\r\n";    

   fwrite($fp, $out);    

   while (!feof($fp)) {    

       echo fgets($fp, 128);    

   } 

   fclose($fp);    

}

猜你喜欢

转载自blog.csdn.net/newfarhui/article/details/81389024