PHP中開啟URL位址的幾種方法總結,這裡的函數主要用於小偷採集等函數。
以get方式取得內容
<?php $url='www.baidu.com/'; $html = file_get_contents($url); //print_r($http_response_header); ec($html); printhr(); printarr($http_response_header); printhr(); ?>
範例程式碼2: 用fopen開啟url,
#以get方式取得內容
<? $fp = fopen($url, 'r'); printarr(stream_get_meta_data($fp)); printhr(); while(!feof($fp)) { $result .= fgets($fp, 1024); } echo "url body: $result"; printhr(); fclose($fp); ?>
範例程式碼3:用file_get_contents函數,以post方式取得url
<?php $data = array ('foo' => 'bar'); $data = http_build_query($data); $opts = array ( 'http' => array ( 'method' => 'POST', 'header'=> "Content-type: application/x-www-form-urlencoded" . "Content-Length: " . strlen($data) . "", 'content' => $data ), ); $context = stream_context_create($opts); $html = file_get_contents('localhost/e/admin/test.html', false, $context); echo $html; ?>
範例程式碼4:用fsockopen函數開啟url,以get方式取得完整的數據,包括header和body
<? function get_url ($url,$cookie=false) { $url = parse_url($url); $query = $url[path]."?".$url[query]; ec("Query:".$query); $fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30); if (!$fp) { return false; } else { $request = "GET $query HTTP/1.1"; $request .= "Host: $url[host]"; $request .= "Connection: Close"; if($cookie) $request.="Cookie: $cookie\n"; $request.=""; fwrite($fp,$request); while(!@feof($fp)) { $result .= @fgets($fp, 1024); } fclose($fp); return $result; } } //获取url的html部分,去掉header function GetUrlHTML($url,$cookie=false) { $rowdata = get_url($url,$cookie); if($rowdata) { $body= stristr($rowdata,""); $body=substr($body,4,strlen($body)); return $body; } return false; } ?>
最近開發中遇到一個問題,程式第4行會請求一個url,透過尋找相關的資料發現有多種方法,本文給大家介紹了關於php中請求url的五種方法,分別是用fopen()函數、file()函數、file_get_contents()函數、curl() 請求遠端url資料和exec() 執行命令列指令
#本文主要跟大家介紹了關於php中請求url的五種方法,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹:
五種方法:
其中wget指令在本機虛機測試請求www.baidu.com時,沒有成功,在遠端伺服器上卻可以,考慮時DNS解析的問題,於是直接請求IP成功下載了index.html的檔案。
這裡只提供了方法,其中的優缺點需要詳細了解每一個方法的功能和缺陷。
一、fopen()函數
$file = fopen("www.jb51.net", "r") or die("打开远程文件失败!"); while (!feof($file)) { $line = fgets($file, 1024); //使用正则匹配标题标记 if (preg_match("/<title>(.*)<\/title>/i", $line, $out)) { $title = $out[1]; //将标题标记中的标题字符取出 break; //退出循环,结束远程文件读取 } } fclose($file);
二、file()函數
$lines = file("www.jb51.net/article/48866.htm"); readfile(www.jb51.net/article/48866.htm);
三、file_get_contents()函數
$content = file_get_contents(www.jb51.net/article/48866.htm);
四、curl() 請求遠端url資料
$url = "www.baidu.com"; $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $contents = curl_exec($ch); curl_close($ch);
五、exec() 執行命令列指令
//exec("wget 220.181.111.188"); shell_exec("wget 220.181.111.188");
以上是php中請求url有哪些方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!