W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
file_get_contents() 把整個(gè)文件讀入一個(gè)字符串中。
該函數(shù)是用于把文件的內(nèi)容讀入到一個(gè)字符串中的首選方法。如果服務(wù)器操作系統(tǒng)支持,還會使用內(nèi)存映射技術(shù)來增強(qiáng)性能。
類似函數(shù):fopen() 函數(shù)打開一個(gè)文件或 URL。區(qū)別是fopen()打開網(wǎng)頁后,返回的不是字符串,不能直輸出的,還需要用到fgets()這個(gè)函數(shù)來獲取字符串。fgets()函數(shù)是從文件指針中讀取一行。文件指針必須是有效的,必須指向由 fopen() 或 fsockopen() 成功打開的文件(并還未由 fclose() 關(guān)閉)。
相關(guān)函數(shù):file_put_contents() 函數(shù)把一個(gè)字符串寫入文件中。
參數(shù) | 描述 |
---|---|
path | 必需。規(guī)定要讀取的文件,或者url。 |
include_path | 可選。如果您還想在 include_path(在 php.ini 中)中搜索文件的話,請?jiān)O(shè)置該參數(shù)為 '1'。 |
context | 可選。規(guī)定文件句柄的環(huán)境。context 是一套可以修改流的行為的選項(xiàng)。若使用 NULL,則忽略。 |
start | 可選。規(guī)定在文件中開始讀取的位置。該參數(shù)是 PHP 5.1 中新增的。 |
max_length | 可選。規(guī)定讀取的字節(jié)數(shù)。該參數(shù)是 PHP 5.1 中新增的。 |
提示:該函數(shù)是二進(jìn)制安全的。(意思是二進(jìn)制數(shù)據(jù)(如圖像)和字符數(shù)據(jù)都可以使用此函數(shù)寫入。)
上面的代碼將輸出:
獲取某個(gè)網(wǎng)址頁面的源代碼也可以使用file_get_contents() 函數(shù)
<?php
$pagecontent = file_get_contents("http://hgci.cn");
echo $pagecontent;
?>
上面的代碼將輸出:
http://hgci.cn地址所對應(yīng)的源代碼
Note:
如果要打開有特殊字符的 URL (比如說有空格),就需要使用 urlencode() 進(jìn)行 URL 編碼。
在使用file_get_contents函數(shù)讀取文件或URL的時(shí)候,經(jīng)常會出現(xiàn)超時(shí)的情況,我們可以通過一些方法來盡量的避免或者解決。
1、增加超時(shí)的時(shí)間限制
這里需要注意:set_time_limit(0)只是設(shè)置你的PHP程序的超時(shí)時(shí)間,而不是file_get_contents函數(shù)讀取URL的超時(shí)時(shí)間。
想通過set_time_limit(0)影響到file_get_contents來增加超時(shí)時(shí)間,經(jīng)測試,是無效的。真正的修改file_get_contents延時(shí)可以用resource $context的timeout參數(shù),timeout參數(shù)的單位是s(秒)。
實(shí)例:
$opts = array(
'http'=>array(
'method'=>"GET",
'timeout'=>30,
)
);
$html = file_get_contents('http://www.example.com', false, stream_context_create($opts));
2、超過幾秒就重新執(zhí)行,多次重試直到成功
$cnt=0;
while($cnt < 3 && ($str=@file_get_contents('http://hgci.cn'))===FALSE) $cnt++;
注意:如果執(zhí)行時(shí)間過長,還需要用函數(shù)set_time_limit(0);就不會超時(shí)了。
$context = array(
'http' => array(
'proxy' => 'tcp://192.168.0.1:3128', //這里設(shè)置你要使用的代理ip及端口號
'request_fulluri' => true,
),
);
$context = stream_context_create($context);
$html = file_get_contents("http://hgci.cn/archives/806/", false, $context);
echo $html;
設(shè)置需要驗(yàn)證的代理IP去采集獲取頁面數(shù)據(jù)$auth = base64_encode('USER:PASS'); //LOGIN:PASSWORD 這里是代理服務(wù)器的賬戶名及密碼
$context = array(
'http' => array(
'proxy' => 'tcp://192.168.0.1:3128', //這里設(shè)置你要使用的代理ip及端口號
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth",
),
);
$context = stream_context_create($context);
$html = file_get_contents("http://hgci.cn/archives/806/", false, $context);
echo $html;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: