在PHP中使用Curl

2021-08-29 21:29:48 字數 2528 閱讀 4112

摘要:

在這篇文章中主要講解php_curl庫的知識,並教你如何更好的使用php_curl。

簡介你可能在你的編寫php指令碼**中會遇到這樣的問 題:怎麼樣才能從其他站點獲取內容呢?這裡有幾個解決方式;最簡單的就是在php中使用fopen()函式,但是fopen函式沒有足夠的引數來使用,比 如當你想構建乙個「網路爬蟲」,想定義爬蟲的客戶端描述(ie,firefox),通過不同的請求方式來獲取內容,比如post,get;等等這些需求是 不可能用fopen() 函式實現的。

為了解決我們上面提出的問題,我們可以使用php的擴充套件庫-curl,這個擴充套件庫通常是預設在安裝包中的,你可以它來獲取其他站點的內容,也可以來幹別的。

2、linux下的php開啟curl庫支援:

編譯php時在./configure後加上 –with-curl

<?php

// create a new curl resource

$ch = curl_init();

?>

我們已經成功建立了乙個curl會話,如果需要獲取乙個url的內容,那麼接下的一步,傳遞乙個url給curl_setopt()函式,**:

<?php

// grab url and pass it to the browser

curl_exec($ch);

?>

最後,關閉當前的curl會話

<?php

//close curl resource, and free up system resources

curl_close($ch);

?>

下面我們來看看完成的例項**:

<?php

<?php

在上面的2個例項中,你可能注意到通過設定函式curl_setopt() 的不同引數,可以獲得不同結果,這正是curl強大的原因,下面我們來看看這些引數的含義。

如果你看過php手冊中的curl_setopt()函式,你可以注意到了,它下面長長的引數列表,我們不可能一一介紹,更多的內容請檢視php手冊,這裡只介紹常用的和有的一些引數。

第乙個很有意思的引數是curlopt_followlocation,當你把這個引數設定為true時,curl會根據任何重定向命令更深層次的獲取轉向路徑,舉個例子:當你嘗試獲取乙個php的頁面,然後這個php的頁 麵中有一段跳轉** <?php header(」location:http://new_url」);….?>,curl將從http://new_url獲取內容,而不是返回 跳轉**。完整的**如下:

<?php

下一步介紹的引數是curlopt_post,這是乙個非常有用的功能,因為它可以讓您這樣做post請求,而不是get請求,這實際上意味著你可以提交

其他形式的頁面,無須其實在表單中填入。下面的例子表明我的意思:

and the handle_form.php file:

<?php

echo 『』;

echo 『

』;

print_r ($_post);

echo 『

』;

?>

(view live demo)

現在我們把最有意思的乙個引數都介紹過了,下面我們來介紹乙個curl_getinfo() 函式,看看它能為我們做些什麼。

獲取頁面的資訊:

(view live demo )

大部分返回的資訊是請求本身的,像:這個請求花的時間,返回的標頭檔案資訊,當然也有一些頁面的資訊,像頁面內容的大小,最後修改的時間。

那些全是關於curl_getinfo()函式的,現在讓我們看看它的實際用途。

實際用途:

curl庫的第一用途可以檢視乙個url頁面是否存在,我們可以通過檢視這個url的請求返回的**來判斷比如404代表這個頁面不存在,我們來看一些例子:

(view live demo )

其他的使用者可能是建立乙個自動檢查器,驗證每個請求的頁面是否存在。

我們可以用curl庫來寫和google類似的網頁蜘蛛(web spider),或是其他的網頁蜘蛛。這篇文章不是關於如何寫乙個網頁蜘蛛的,因此所以我們沒有講任何關於網頁蜘蛛的細節問題,但是以後在phpit 將會介紹用 curl來構造乙個web spider.

結論:

在這篇文章我已經表明,如何使用php中的curl庫和其大部分的選項。

為最基本的任務,只想獲得乙個網頁,你可能不會需要curl庫,但是,一旦你想要做任何事情稍微先進的,您可能會想要使用curl庫。

在近未來,我會告訴您究竟如何建立自己的網路蜘蛛,類似google的網路蜘蛛,敬請期待,以phpit。

curl在Android中使用的Demo

在android原始碼環境下編譯出curl.a靜態庫後可以放到jni下直接使用了。要注意的是,在android.mk中需要這樣將靜態庫編譯到jni的動態庫中。local path call my dir 使用靜態庫 include clear vars local module curl local...

php中使用CURL之php curl詳解

curl是個什麼東西?簡單地說就是,curl是乙個庫,能讓你通過url和許多不同種的伺服器進行勾搭 搭訕和深入交流,並且還支援許多協議。並且人家還說了curl可以支援https認證 http post ftp上傳 cookies 簡單口令認證等等功能啦。說了那麼多其實沒什麼感覺吧,在應用中才有感覺,...

在php中使用Sphinx

要使用php連線sphinx進行全文搜尋,有兩種方式 將sphinx作為php擴充套件安裝,這種方式比較麻煩,此處不介紹 在sphinx原始碼目錄下的有個api sphinxapi.php,將此檔案reqire到你的php中,即可呼叫api方法進行全文搜尋 require sphinxapi.php...