PHP中使用curl入門(mén)教程
概述
在我的上一篇文章“curl和libcurl簡(jiǎn)介”中簡(jiǎn)單的給大家介紹了curl相關(guān)的知識(shí)。這篇文章向大家介紹一下PHP中的curl擴(kuò)展。
盡管在上一篇文章中,對(duì)curl和libcurl做了區(qū)分,也解釋了某些相關(guān)的概念。同時(shí),也知道了PHP中的curl擴(kuò)展其實(shí)是對(duì)libcurl的封裝。但是,在這篇文章中,為了寫(xiě)起來(lái)方便,將不再對(duì)這兩個(gè)概念進(jìn)行區(qū)分,因此文章接下來(lái)提到的curl其實(shí)是指libcurl,希望不會(huì)把大家繞糊涂。
關(guān)于PHP中curl擴(kuò)展這里就不再過(guò)多介紹了,大家可以查下文檔。
安裝curl
關(guān)于curl的安裝,這里也不做過(guò)多的介紹。windows和linux都是一樣的流程,根據(jù)平臺(tái)選擇相應(yīng)的安裝方式,然后在php.ini文件中開(kāi)啟curl擴(kuò)展,與別的擴(kuò)展的安裝都是一樣的。
PHP中使用curl的步驟
在PHP中,可以使用curl完成各種各樣的功能,如抓取網(wǎng)頁(yè),文件的上傳/下載、模擬登錄等。但是這些功能的實(shí)現(xiàn)都是基于四個(gè)步驟完成的,所以curl的使用并不復(fù)雜。
使用curl時(shí),主要分為以下四個(gè)步驟:
1.初始化一個(gè)curl實(shí)例—curl_init()
2.設(shè)置curl執(zhí)行時(shí)的相關(guān)選項(xiàng)—curl_setopt()
3.執(zhí)行curl查詢(xún)—curl_exec()
4.關(guān)閉curl—curl_close()
在這四個(gè)步驟中,1、3、4步都很容易。最麻煩的就是2步,這一步設(shè)置curl的選項(xiàng),這里有100多個(gè)不同的選項(xiàng),要完成不同的功能,就要對(duì)這些選項(xiàng)進(jìn)行組合。
下面對(duì)這四個(gè)步驟做一下說(shuō)明:
1.初始化一個(gè)curl實(shí)例,這一步使用函數(shù)curl_init(),查看一下PHP手冊(cè),可以看到該函數(shù)的返回值是一個(gè)資源(resource)類(lèi)型,我們需要使用一個(gè)變量來(lái)保存這個(gè)實(shí)例,因?yàn)楹竺娴牟襟E都會(huì)用到這個(gè)實(shí)例。具體代碼示例:
$curl=curl_init(); //輸出resource(2, curl)
2.設(shè)置curl相關(guān)選項(xiàng),設(shè)置curl選項(xiàng)使用函數(shù)curl_setopt()。該函數(shù)接受三個(gè)參數(shù):第一個(gè)參數(shù)就是要設(shè)置的curl的實(shí)例也就是第一步中的那個(gè)實(shí)例,第二個(gè)參數(shù)要設(shè)置的選項(xiàng),是一個(gè)預(yù)定義的常量,具體都有哪些選項(xiàng),大家可以在手冊(cè)里自行查閱。第三個(gè)參數(shù)是要設(shè)置的選項(xiàng)的具體值。
代碼示例:
curl_setopt ($curl, CURLOPT_URL, "http://www.php.net");
3.執(zhí)行curl查詢(xún),這一步使用函數(shù)curl_exec()。該函數(shù)接受一個(gè)參數(shù),這個(gè)參數(shù)也是第1步中獲取的實(shí)例。
代碼示例:
curl_exec ($curl);
4.關(guān)閉當(dāng)前curl,這一步使用函數(shù)curl_close()。該函數(shù)同樣也是接受第1步中獲取的curl實(shí)例作為參數(shù)。
代碼示例:
curl_close($curl);
在PHP中使用curl一般都遵循這四個(gè)步驟,其中主要是通過(guò)對(duì)2步的不同設(shè)置來(lái)完成不同的功能,所以第2步是最麻煩的,有的甚至需要大家用心理解。
一個(gè)簡(jiǎn)單的curl代碼實(shí)例
前面給大家介紹了使用curl的四個(gè)步驟,這里給大家簡(jiǎn)單演示一個(gè)抓取網(wǎng)頁(yè)內(nèi)容的實(shí)例,代碼很簡(jiǎn)單,但是希望能幫助大家更好的理解curl。
抓取百度首頁(yè)內(nèi)容:
$curl=curl_init();
curl_setopt ($curl, CURLOPT_URL, "http://www.baidu.com");
$baidu=curl_exec($curl);
curl_close($curl);
運(yùn)行這一段代碼,頁(yè)面將顯示百度首頁(yè)。
總結(jié)
截止到今天,寫(xiě)了五六篇博客了。很想把自己學(xué)習(xí)的知識(shí)記錄下來(lái),也很想跟大家分享,但是一直覺(jué)得自己的語(yǔ)言組織能力不是太好,不知道看到文章的人能不能看懂,希望以后在語(yǔ)言組織方面能不斷進(jìn)步吧。
相關(guān)文章
非常好用的Zend Framework分頁(yè)類(lèi)
這篇文章主要介紹了非常好用的Zend Framework分頁(yè)類(lèi),包含控制層、模型層、視圖層及分頁(yè)源碼,Css部分請(qǐng)自由發(fā)揮,需要的朋友可以參考下2014-06-06laravel 獲取某個(gè)查詢(xún)的查詢(xún)SQL語(yǔ)句方法
今天小編就為大家分享一篇laravel 獲取某個(gè)查詢(xún)的查詢(xún)SQL語(yǔ)句方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10PHP模板引擎Smarty內(nèi)置變量調(diào)解器用法詳解
這篇文章主要介紹了PHP模板引擎Smarty內(nèi)置變量調(diào)解器用法,結(jié)合實(shí)例形式詳細(xì)分析了Smarty中的常用內(nèi)置變量調(diào)節(jié)器定義與使用技巧,需要的朋友可以參考下2016-04-04關(guān)于Curl在Swoole協(xié)程中的解決方案詳析
這篇文章主要給大家介紹了關(guān)于Curl在Swoole協(xié)程中的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swoole具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09php實(shí)現(xiàn)簡(jiǎn)單的權(quán)限管理的示例代碼
本篇文章主要介紹了php實(shí)現(xiàn)簡(jiǎn)單的權(quán)限管理的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08thinkPHP實(shí)現(xiàn)MemCache分布式緩存功能
這篇文章主要介紹了thinkPHP實(shí)現(xiàn)MemCache分布式緩存功能的方法,結(jié)合實(shí)例形式分析了thinkPHP通過(guò)修改CacheMemcache.class.php源文件實(shí)現(xiàn)分布式緩存功能的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03解決Linux下php-fpm進(jìn)程過(guò)多導(dǎo)致內(nèi)存耗盡問(wèn)題
這篇文章主要介紹了解決Linux下php-fpm進(jìn)程過(guò)多導(dǎo)致內(nèi)存耗盡問(wèn)題,需要的朋友可以參考下2017-12-12