PHP中的file_get_contents函數(shù)應(yīng)用非常廣泛,我們可以利用file_get_contents獲取遠(yuǎn)程網(wǎng)址中的網(wǎng)頁(yè)內(nèi)容。例如有的域名查詢接口,就是通過(guò)這種方式獲取查詢結(jié)果的。它的原理是先從本網(wǎng)站里發(fā)送一條GET請(qǐng)求到遠(yuǎn)程服務(wù)器中的某個(gè)頁(yè)面,再將該頁(yè)面的結(jié)果返回到本網(wǎng)站里并通過(guò)程序接收返回的內(nèi)容。采用這種技術(shù)我應(yīng)用非常多,例如天氣查詢、快遞查詢等等,比比皆是。且看下列代碼。
$Get_Str = file_get_contents("遠(yuǎn)程網(wǎng)址");
if($Get_Str == false) //如果獲取不成功,則返回false
{
echo("獲取不成功");
}
else
{
$myarr = explode(",",$Get_Str);
//后續(xù)處理……
}
這要求提前預(yù)知遠(yuǎn)程網(wǎng)址所返回內(nèi)容的格式,然后才能對(duì)接收到的內(nèi)容進(jìn)行格式化處理。例如上面的代碼中,我們預(yù)知遠(yuǎn)程代碼中的返回內(nèi)容格式均以,號(hào)進(jìn)行分隔,然后通過(guò)對(duì)字符串進(jìn)行分割處理,得出各項(xiàng)數(shù)據(jù)再進(jìn)行后續(xù)處理。
假設(shè)要實(shí)現(xiàn)下列功能:
我們希望從A站中獲取B站中的學(xué)生成績(jī)數(shù)據(jù),那就要先在B站中寫一個(gè)數(shù)據(jù)庫(kù)讀取的程序,比如根據(jù)學(xué)號(hào)獲取學(xué)生姓名及各科的成績(jī),該頁(yè)地址為http://www.b.com/get.php,該頁(yè)返回?cái)?shù)據(jù)格式為:學(xué)號(hào),姓名,語(yǔ)文成績(jī),數(shù)學(xué)成績(jī)。OK,再在B站中獲取A站中的數(shù)據(jù),獲取方式為:
$Get_Str = file_get_contents("http://www.b.com/get.php?xuehao=1") //表示從B站中獲取學(xué)號(hào)為1的學(xué)生信息。
再通過(guò)以下代碼將獲得的內(nèi)容進(jìn)行格式化處理:
$myarr = explode(",",$Get_Str); //由于B站中的get.php返回格式是以,號(hào)分隔的,格式化數(shù)據(jù)時(shí)同樣用,號(hào)進(jìn)行分割,得到我們最終想要的數(shù)據(jù):
$myarr[0] => 學(xué)號(hào)
$myarr[1] => 姓名
$myarr[2] => 語(yǔ)文成績(jī)
$myarr[3] => 數(shù)學(xué)成績(jī)
很簡(jiǎn)單的操作,但是應(yīng)用范圍卻十分廣泛,十分強(qiáng)大。