PHP cURL的詳細(xì)使用手冊(cè)
在PHP語(yǔ)言中,有許多東西值得我們?nèi)ド钊氲奶接?。下面我們將為大家詳?xì)介紹有關(guān)PHP cURL的使用方法,希望對(duì)大家有所幫助。#t#
使用PHP cURL可以簡(jiǎn)單和有效地去抓網(wǎng)頁(yè)。你只需要運(yùn)行一個(gè)腳本,然后分析一下你所抓取的網(wǎng)頁(yè),然后就可以以程序的方式得到你想要的數(shù)據(jù)了。無(wú)論是你想從從一個(gè)鏈接上取部分?jǐn)?shù)據(jù),或是取一個(gè)XML文件并把其導(dǎo)入數(shù)據(jù)庫(kù),那怕就是簡(jiǎn)單的獲取網(wǎng)頁(yè)內(nèi)容,PHP cURL是一個(gè)功能強(qiáng)大的PHP庫(kù)。本文主要講述如果使用這個(gè)PHP庫(kù)。
啟用PHP cURL設(shè)置
首先,我們得先要確定我們的PHP是否開(kāi)啟了這個(gè)庫(kù),你可以通過(guò)使用php_info()函數(shù)來(lái)得到這一信息。
﹤?phpphpinfo();?﹥
如果你可以在網(wǎng)頁(yè)上看到下面的輸出,那么表示PHP cURL庫(kù)已被開(kāi)啟。
如果你看到的話,那么你需要設(shè)置你的PHP并開(kāi)啟這個(gè)庫(kù)。如果你是在Windows平臺(tái)下,那么非常簡(jiǎn)單,你需要改一改你的php.ini文件的設(shè)置,找到php_curl.dll,并取消前面的分號(hào)注釋就行了。如下所示:
//取消下在的注釋extension=php_curl.dll
如果你是在Linux下面,那么,你需要重新編譯你的PHP了,編輯時(shí),你需要打開(kāi)編譯參數(shù)——在configure命令上加上“–with-curl” 參數(shù)。
一個(gè)小示例
如果一切就緒,下面是一個(gè)小例程:
﹤?php
// 初始化一個(gè)PHP cURL對(duì)象
$curl = curl_init();
// 設(shè)置你需要抓取的URL
curl_setopt($curl, CURLOPT_URL, 'http://cocre.com');
// 設(shè)置header
curl_setopt($curl, CURLOPT_HEADER, 1);
// 設(shè)置PHP cURL參數(shù),要求結(jié)果保存到字符串中還是輸出到屏幕上。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 運(yùn)行cURL,請(qǐng)求網(wǎng)頁(yè)
$data = curl_exec($curl);
// 關(guān)閉URL請(qǐng)求
curl_close($curl);
// 顯示獲得的數(shù)據(jù)
var_dump($data);
如何POST數(shù)據(jù)
上面是抓取網(wǎng)頁(yè)的代碼,下面則是向某個(gè)網(wǎng)頁(yè)P(yáng)OST數(shù)據(jù)。假設(shè)我們有一個(gè)處理表單的網(wǎng)址http://www.example.com/sendSMS.php,其可以接受兩個(gè)表單域,一個(gè)是電話號(hào)碼,一個(gè)是短信內(nèi)容。
- ﹤ ?php
- $phoneNumber = '13912345678';
- $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.example.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);
- ?﹥
從上面的程序我們可以看到,使用CURLOPT_POST設(shè)置HTTP協(xié)議的POST方法,而不是GET方法,然后以CURLOPT_POSTFIELDS設(shè)置POST的數(shù)據(jù)。
關(guān)于代理服務(wù)器
下面是一個(gè)如何使用代理服務(wù)器的示例。請(qǐng)注意其中高亮的代碼,代碼很簡(jiǎn)單,我就不用多說(shuō)了。
- ﹤ ?php $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL,
'http://www.example.com');- curl_setopt($ch, CURLOPT_HEADER, 1);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
- curl_setopt($ch, CURLOPT_PROXY,
'fakeproxy.com:1080');- curl_setopt($ch, CURLOPT_PROXYUSERPWD,
'user:password');- $data = curl_exec();
- curl_close($ch);
- ?﹥
關(guān)于其它更多的內(nèi)容,請(qǐng)參看相關(guān)的PHP cURL手冊(cè)。