首頁  >  文章  >  後端開發  >  php如何使用curl? (用法介紹)

php如何使用curl? (用法介紹)

青灯夜游
青灯夜游轉載
2020-04-17 09:16:456916瀏覽

php如何使用curl?以下這篇文章要為大家總結一下php中的curl的用法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

php如何使用curl? (用法介紹)

一、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 => &#39;http://www.example.com/&#39;,
                 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_initurl_share_init — Initialize a cURL share handle

  • curl_share_setopt — Set an option for a cURL share handle.

  • curl_strerror — Return string describing the givenerror ##curl_strerror — Return string describing the givenerror ##curl

  • curl_unescape — 解碼給定的URL 編碼的字串

  • curl_version — 取得cURL版本資訊

#四、實例

1、使用curl,get取得資料

<?php
$url = &#39;http://www.example.com&#39;;
//初始化一个 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(
    &#39;name&#39;=>&#39;test_name&#39;,
    &#39;age&#39;   => 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, &#39;user:password&#39;);如果要密码的话,加上这个  
$result=curl_exec($ch); 
curl_close($ch);
?>

4、繼續保持本站session的呼叫

在實現使用者同步登入的情況下需要共享session,如果要繼續保持本站的session,那麼要把sessionid放到http請求中

<?php
$session_str = session_name().&#39;=&#39;.session_id().&#39;; path=/; domain=.explame.com&#39;;
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? (用法介紹)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除