幾種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);
}