首頁  >  文章  >  後端開發  >  php中請求url有哪些方法

php中請求url有哪些方法

零下一度
零下一度原創
2017-07-16 16:39:373809瀏覽

PHP中開啟URL位址的幾種方法總結,這裡的函數主要用於小偷採集等函數。

1: 用file_get_contents 

以get方式取得內容 

<?php 
$url=&#39;www.baidu.com/&#39;; 
$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, &#39;r&#39;); 
 
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 (&#39;foo&#39; => 
&#39;bar&#39;); 
$data = http_build_query($data); 
$opts = array ( 
&#39;http&#39; 
=> array ( 
&#39;method&#39; => &#39;POST&#39;, 
&#39;header&#39;=> "Content-type: 
application/x-www-form-urlencoded" . 
"Content-Length: " . strlen($data) . 
"", 
&#39;content&#39; => $data 
), 
); 
$context = 
stream_context_create($opts); 
$html = 
file_get_contents(&#39;localhost/e/admin/test.html&#39;, 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的五種方法,分享出來供大家參考學習,下面話不多說,來一起看看詳細的介紹:

五種方法:

  • 前三種都是php基本的檔案運算子

  • curl()是php擴充需要開啟,linux下需要安裝

  • #exec()執行的是linux指令列下的指令wget下載遠端檔案

其中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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn