PHP使用CURL詳解
CURL是一個非常強大的開源庫部凑,支持很多協(xié)議蹭睡,包括HTTP、FTP枢舶、TELNET等懦胞,我們使用它來發(fā)送HTTP請求。它給我 們帶來的好處是可以通過靈活的選項設(shè)置不同的HTTP協(xié)議參數(shù)凉泄,并且支持HTTPS躏尉。CURL可以根據(jù)URL前綴是“HTTP” 還是“HTTPS”自動選擇是否加密發(fā)送內(nèi)容。
CURL的優(yōu)勢
你也許會說后众,我們來采集一個頁面胀糜,通常情況下颅拦,只要通過file_get_contents,file或者readfile函數(shù)就能輕松實現(xiàn)教藻,根本不必使用CURL距帅;
<?php
$str = file_get_contents('http://www.reibang.com');
//或者是:
$str = file("http://www.baidu.com");
//或者是:
$str = readfile("http://www.aliyun.com");
沒錯,以上函數(shù)在某些情況下使用起來確實很方便括堤,但是我感覺這幾個函數(shù)不夠靈活碌秸,也沒法進行錯誤處理。而且悄窃,如果遇到要在php程序中向某個服務(wù)器提交表單數(shù)據(jù)讥电,上傳文件,處理cookies或者認證等任務(wù)時广匙,以上三個函數(shù)根本無法勝任允趟。這個時候,CURL就體現(xiàn)它的價值了鸦致。
CURL不但支持很多的網(wǎng)絡(luò)協(xié)議潮剪,而且提供了關(guān)于url請求的具體信息,很強大分唾!
CURL的簡單使用步驟
要使用cURL來發(fā)送url請求抗碰,具體步驟大體分為以下四步:
1.初始化,創(chuàng)建一個新cURL資源
2.設(shè)置URL和相應(yīng)的選項
3.抓取URL并把它傳遞給瀏覽器
4.關(guān)閉cURL資源绽乔,并且釋放系統(tǒng)資源
好弧蝇,現(xiàn)在我們來用代碼完成上述CURL的四步:
//1.初始化,創(chuàng)建一個新cURL資源
$ch = curl_init();
//2.設(shè)置URL和相應(yīng)的選項
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com");
curl_setopt($ch, CURLOPT_HEADER, 0);
//3.抓取URL并把它傳遞給瀏覽器
curl_exec($ch);
//4.關(guān)閉cURL資源折砸,并且釋放系統(tǒng)資源
curl_close($ch);
上述四步中看疗,其中第二步最為關(guān)鍵,可以設(shè)置一些高級選項睦授,詳見PHP手冊函數(shù)介紹:
看到了吧两芳,只要在第二個函數(shù)之內(nèi)設(shè)置這些選項就可以完成相應(yīng)的功能,cURL的功能是灰常強大滴去枷,大家可以嘗試一下哦怖辆!
例如,我們只想把獲取到的內(nèi)容輸入到文件删顶,而不是直接輸出給瀏覽器竖螃,我們就可以使用CURLOPT_RETURNTRANSFER選項!
這樣在curl執(zhí)行的時候逗余,就會把頁面的內(nèi)容輸出到文件當(dāng)中特咆,我們就可以完成采集等功能啦!
效率方面录粱,curl的原理是模擬瀏覽器的操作坚弱,它的效率要比file_get_contents()高出四倍以上蜀备,試想一下,我們
要采集一個信息量特別龐大的站荒叶,運行效率的差別可想而知碾阁!
不單單是效率上,穩(wěn)定性上來說些楣,curl也遠比file_get_contents()函數(shù)要好很多脂凶!
這就是強大的curl,下文將給大家詳細介紹它的高級應(yīng)用愁茁,我們可以模擬瀏覽器的post傳值蚕钦,甚至上傳!