程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP的cURL庫簡介及使用示例

PHP的cURL庫簡介及使用示例

編輯:關於PHP編程

     這篇文章主要介紹了PHP的cURL庫簡介及使用示例,需要的朋友可以參考下

       

    使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然後分析一下你所抓取的網頁,然後就可以以程序的方式得到你想要的數據了。無論是你想從從一個鏈接上取部分數據,或是取一個XML文件並把其導入數據庫,那怕就是簡單的獲取網頁內容,cURL 是一個功能強大的PHP庫。

    PHP中的CURL函數庫(Client URL Library Function)

     

     代碼如下:
    curl_close — 關閉一個curl會話
    curl_copy_handle — 拷貝一個curl連接資源的所有內容和參數
    curl_errno — 返回一個包含當前會話錯誤信息的數字編號
    curl_error — 返回一個包含當前會話錯誤信息的字符串
    curl_exec — 執行一個curl會話
    curl_getinfo — 獲取一個curl連接資源句柄的信息
    curl_init — 初始化一個curl會話
    curl_multi_add_handle — 向curl批處理會話中添加單獨的curl句柄資源
    curl_multi_close — 關閉一個批處理句柄資源
    curl_multi_exec — 解析一個curl批處理句柄
    curl_multi_getcontent — 返回獲取的輸出的文本流
    curl_multi_info_read — 獲取當前解析的curl的相關傳輸信息
    curl_multi_init — 初始化一個curl批處理句柄資源
    curl_multi_remove_handle — 移除curl批處理句柄資源中的某個句柄資源
    curl_multi_select — Get all the sockets associated with the cURL extension, which can then be "selected"
    curl_setopt_array — 以數組的形式為一個curl設置會話參數
    curl_setopt — 為一個curl設置會話參數
    curl_version — 獲取curl相關的版本信息
    curl_init()函數的作用初始化一個curl會話,curl_init()函數唯一的一個參數是可選的,表示一個url地址。
    curl_exec()函數的作用是執行一個curl會話,唯一的參數是curl_init()函數返回的句柄。
    curl_close()函數的作用是關閉一個curl會話,唯一的參數是curl_init()函數返回的句柄。

     

    例子一: 基本例子

     

    代碼如下:
    ﹤?php
    // 初始化一個 cURL 對象
    $curl = curl_init();
    // 設置你需要抓取的URL
    curl_setopt($curl, CURLOPT_URL, 'http://www.cmx8.cn');
    // 設置header
    curl_setopt($curl, CURLOPT_HEADER, 1);
    // 設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上。
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    // 運行cURL,請求網頁
    $data = curl_exec($curl);
    // 關閉URL請求
    curl_close($curl);
    // 顯示獲得的數據
    var_dump($data);
    ?>

     

    例子二: POST數據

    sendSMS.php,其可以接受兩個表單域,一個是電話號碼,一個是短信內容。

     

     代碼如下:
    ﹤?php
    $phoneNumber = '13812345678';
    $message = 'This message was generated by curl and php';
    $curlPost = 'pNUMBER=' . urlencode($phoneNumber) . '&MESSAGE=' . urlencode($message) . '&SUBMIT=Send';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.lxvoip.com/sendSMS.php');
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
    $data = curl_exec();
    curl_close($ch);
    ?﹥

     

    例子三:使用代理服務器

     

     代碼如下:
    ﹤?php 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.cmx8.cn');
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_PROXY, 'proxy.lxvoip.com:1080');
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:password');
    $data = curl_exec();
    curl_close($ch);
    ?﹥

     

    例子四: 模擬登錄

    Curl 模擬登錄 discuz 程序,適合DZ7.0,將username改成你的用戶名,userpass改成你的密碼就可以了.

     

     代碼如下:
    <?php
    /**
    * Curl 模擬登錄 discuz 程序
    * 尚未實現開啟驗證碼的的論壇登錄功能
    */
    !extension_loaded('curl') && die('The curl extension is not loaded.');
    $discuz_url = 'http://www.lxvoip.com';//論壇地址
    $login_url = $discuz_url .'/logging.php?action=login';//登錄頁地址
    $get_url = $discuz_url .'/my.php?item=threads'; //我的帖子
    $post_fields = array();
    //以下兩項不需要修改
    $post_fields['loginfield'] = 'username';
    $post_fields['loginsubmit'] = 'true';
    //用戶名和密碼,必須填寫
    $post_fields['username'] = 'lxvoip';
    $post_fields['password'] = '88888888';
    //安全提問
    $post_fields['questionid'] = 0;
    $post_fields['answer'] = '';
    //@todo驗證碼
    $post_fields['seccodeverify'] = '';
    //獲取表單FORMHASH
    $ch = curl_init($login_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $contents = curl_exec($ch);
    curl_close($ch);
    preg_match('/<inputs*type="hidden"s*name="formhash"s*value="(.*?)"s*/>/i', $contents, $matches);
    if(!empty($matches)) {
    $formhash = $matches[1];
    } else {
    die('Not found the forumhash.');
    }
    //POST數據,獲取COOKIE
    $cookie_file = dirname(__FILE__) . '/cookie.txt';
    //$cookie_file = tempnam('/tmp');
    $ch = curl_init($login_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
    curl_exec($ch);
    curl_close($ch);
    //帶著上面得到的COOKIE獲取需要登錄後才能查看的頁面內容
    $ch = curl_init($get_url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
    $contents = curl_exec($ch);
    curl_close($ch);
    var_dump($contents);
    ?>

     

    以上就是本文的全部內容了,希望大家能夠喜歡。

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved