一、curl簡介
百度百科給的解釋是:資料傳輸神器。那它神器在什麼地方那,通過查詢資料得出curl可以使用url的語法模擬瀏覽器來傳輸資料,因為是模擬瀏覽器所以它支援多種的網路協定。目前支援http、https、ftp、gopher、telnet、dict、file和ldap協定。libcurl同時也支援HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能通過PHP的FTP擴充套件完成)、HTTP 基於表單的上傳、代理、cookies和使用者名稱+密碼的認證。
php中使用最多的是通過curl來模擬get和post請求。
二、用法
(1)、要想使用curl,第一步先要在php中開啟curl,在php組態檔php.ini中找到extension=php_curl.dll,把前面的‘;’去掉。重新啟動伺服器。在php程式碼中用phpinfo()列印,發現圖中curl說明開啟成功。
(2)、使用curl完成簡單的請求主要分為四大步:
初始化,建立一個新的curl資源。
設定url和相應的選項
抓取url並把他傳遞給瀏覽器
關閉curl資源。把資源釋放。
eg:
<?php // 建立一個新cURL資源 $ch = curl_init(); // 設定URL和相應的選項 $options = array(CURLOPT_URL => 'http://www.example.com/', CURLOPT_HEADER => false ); curl_setopt_array($ch, $options); // 抓取URL並把它傳遞給瀏覽器 curl_exec($ch); // 關閉cURL資源,並且釋放系統資源 curl_close($ch); ?>
三、curl函數
curl_close — 關閉一個cURL對談
curl_copy_handle — 複製一個cURL控制代碼和它的所有選項
curl_errno — 返回最後一次的錯誤號
curl_error — 返回一個保護當前對談最近一次錯誤的字串
curl_escape — 使用 URL 編碼給定的字串
curl_exec — 執行一個cURL對談
curl_file_create — 建立一個 CURLFile 物件
curl_getinfo — 獲取一個cURL連線資源控制代碼的資訊
curl_init — 初始化一個cURL對談
curl_multi_add_handle — 向curl批次處理對談中新增單獨的curl控制代碼
curl_multi_close — 關閉一組cURL控制代碼
curl_multi_exec — 執行當前 cURL 控制代碼的子連線
curl_multi_getcontent — 如果設定了CURLOPT_RETURNTRANSFER,則返回獲取的輸出的文字流
curl_multi_info_read — 獲取當前解析的cURL的相關傳輸資訊
curl_multi_init — 返回一個新cURL批次處理控制代碼
curl_multi_remove_handle — 移除curl批次處理控制代碼資源中的某個控制代碼資源
curl_multi_select — 等待所有cURL批次處理中的活動連線
curl_multi_setopt — 為 cURL 並行處理設定一個選項
curl_multi_strerror — Return string describing error code
curl_pause — Pause and unpause a connection
curl_reset — 重置一個 libcurl 對談控制代碼的所有的選項
curl_setopt_array — 為cURL傳輸對談批次設定選項
curl_setopt — 設定一個cURL傳輸選項
curl_share_close — Close a cURL share handle
curl_share_init — Initialize a cURL share handle
curl_share_setopt — Set an option for a cURL share handle.
curl_strerror — Return string describing the given error code
curl_unescape — 解碼給定的 URL 編碼的字串
curl_version — 獲取cURL版本資訊
四、範例
1、使用curl,get獲得資料
<?php $url = 'http://www.example.com'; //初始化一個 cURL 物件 $ch = curl_init(); //設定你需要抓取的URL curl_setopt($ch, CURLOPT_URL, $url); // 設定cURL 引數,要求結果儲存到字串中還是輸出到螢幕上。 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //是否獲得跳轉後的頁面 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($ch); curl_close($ch); echo $data; ?>
2、使用curl,post獲得資料
<?php function curl_post($url, $arr_data){ $post_data = http_build_query($url_data); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFLELDS, $post_data); $data = curl_exec($ch); curl_close($ch); echo $data; } $arr_post = array( 'name'=>'test_name', 'age' => 1 ); curl_post("http://www.explame.com/", $arr_post); ?>
3、使用代理抓取頁面
為什麼要使用代理進行抓取呢?以google為例吧,如果去抓google的資料,短時間內抓的很頻繁的話,你就抓取不到了。google對你的ip地址做限制這個時候,你可以換代理重新抓。
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://google.com"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //是否通過http代理來傳輸 curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($ch, CURLOPT_PROXY, 125.21.23.6:8080); //url_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');如果要密碼的話,加上這個 $result=curl_exec($ch); curl_close($ch); ?>
4、繼續保持本站session的呼叫
在實現使用者同步登入的情況下需要共用session,如果要繼續保持本站的session,那麼要把sessionid放到http請求中
<?php $session_str = session_name().'='.session_id().'; path=/; domain=.explame.com'; session_write_close(); //將資料寫入檔案並且結束session $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIE, $session_str); $ret = curl_exec($ch); curl_close($ch); ?>
end
本文轉載自:https://blog.csdn.net/longgeaisisi/article/details/89330576
推薦學習:PHP視訊教學
以上就是php如何使用curl?(用法介紹)的詳細內容,更多請關注TW511.COM其它相關文章!