PHP的curl庫是一個強大的工具,可以用來模擬網(wǎng)絡(luò)請求,不過其中有一個常用的選項是curl_setopt()函數(shù)。這個函數(shù)可以用來設(shè)置curl對象的一些屬性,使得請求的過程更加精細化,提高請求效率。今天我們就來詳細講講curl_setopt()函數(shù)中的一些常見選項。
一、CURLOPT_URL
這個選項用來設(shè)置請求的URL地址,其實一般情況下都需要設(shè)置這個選項,比如我們要請求一個叫做www.baidu.com的網(wǎng)站,那么就可以這么寫:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.baidu.com"); curl_exec($curl); curl_close($curl);二、CURLOPT_RETURNTRANSFER 這個選項用來設(shè)置curl_exec()函數(shù)的返回值是不是直接輸出到頁面,如果設(shè)為true,那么curl_exec()函數(shù)執(zhí)行成功后將會返回抓取到的內(nèi)容,否則返回true或false。一般情況下都需要將這個選項設(shè)為true,比如我們需要訪問一個JSON數(shù)據(jù)接口,并將返回的JSON數(shù)據(jù)解析成PHP數(shù)組:
$json = curl_exec($curl); $data = json_decode($json, true);三、CURLOPT_TIMEOUT 這個選項用來設(shè)置請求超時時間,如果請求時間超過這個時間,那么curl_exec()函數(shù)將會返回false。比如我們連接一個很慢的網(wǎng)站時,設(shè)成5000毫秒:
curl_setopt($curl, CURLOPT_TIMEOUT, 5000);四、CURLOPT_HEADER 這個選項用來設(shè)置請求過程中是否將HTTP頭信息一起返回,如果設(shè)為true,則返回的內(nèi)容中包括HTTP頭信息,一般情況下需要將這個選項設(shè)為false,比如我們只需要獲取返回的HTML文本,而不需要頭信息。
curl_setopt($curl, CURLOPT_HEADER, false);五、CURLOPT_HTTPHEADER 這個選項用來設(shè)置HTTP請求頭信息,比如我們訪問一個需要驗證權(quán)限的API時,需要設(shè)置Authorization頭:
$headers = array( 'Authorization: Bearer ' . $token, 'Content-Type: application/json' ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);六、CURLOPT_POSTFIELDS 這個選項用來設(shè)置POST請求的參數(shù),比如我們需要POST提交一個JSON串:
$data = array('name' =>'john', 'age' =>20); $json = json_encode($data); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);以上就是curl_setopt()函數(shù)中比較常用的選項了,當(dāng)然還有一些其他選項,可以根據(jù)自己的需要進行設(shè)置。使用curl_setopt()函數(shù)可以讓我們更精細化地控制curl請求,更快速地抓取數(shù)據(jù),提高編碼效率。