国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

基于PHP的cURL快速入門一

php中文網
發(fā)布: 2016-06-13 11:00:11
原創(chuàng)
967人瀏覽過

基于PHP的cURL快速入門1

curl 是一個利用url語法規(guī)定來傳輸文件和數(shù)據的工具,支持很多協(xié)議,如http、ftp、telnet等。最爽的是,php也支持 curl 庫。本文將介紹 curl 的一些高級特性,以及在php中如何運用它。

為什么要用 curl?

是的,我們可以通過其他辦法獲取網頁內容。大多數(shù)時候,我因為想偷懶,都直接用簡單的php函數(shù):


以下為引用的內容:

$content = file_get_contents("http://www.nettuts.com");// or$lines = file("http://www.nettuts.com");// orreadfile(http://www.nettuts.com);
登錄后復制
?



不過,這種做法缺乏靈活性和有效的錯誤處理。而且,你也不能用它完成一些高難度任務——比如處理coockies、驗證、表單提交、文件上傳等等。

引用:
cURL 是一種功能強大的庫,支持很多不同的協(xié)議、選項,能提供 URL 請求相關的各種細節(jié)信息。

基本結構

在學習更為復雜的功能之前,先來看一下在PHP中建立cURL請求的基本步驟:
初始化
設置變量
執(zhí)行并獲取結果
釋放cURL句柄


以下為引用的內容:

// 1. 初始化$ch = curl_init();// 2. 設置選項,包括URLcurl_setopt($ch, CURLOPT_URL, "http://www.nettuts.com");curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER, 0);// 3. 執(zhí)行并獲取HTML文檔內容$output = curl_exec($ch);// 4. 釋放curl句柄curl_close($ch);
登錄后復制
?


第二步(也就是 curl_setopt() )最為重要,一切玄妙均在此。有一長串cURL參數(shù)可供設置,它們能指定URL請求的各個細節(jié)。要一次性全部看完并理解可能比較困難,所以今天我們只試一下那些更常用也更有用的選項。

檢查錯誤

你可以加一段檢查錯誤的語句(雖然這并不是必需的):


以下為引用的內容:

// ...$output = curl_exec($ch);if ($output === FALSE) {echo "cURL Error: " . curl_error($ch);}// ...
登錄后復制
?



請注意,比較的時候我們用的是“=== FALSE”,而非“== FALSE”。因為我們得區(qū)分 空輸出 和 布爾值FALSE,后者才是真正的錯誤。

?

獲取信息

這是另一個可選的設置項,能夠在cURL執(zhí)行后獲取這一請求的有關信息:


以下為引用的內容:

// ...curl_exec($ch);$info = curl_getinfo($ch);echo '獲取'. $info['url'] . '耗時'. $info['total_time'] . '秒';// ...
登錄后復制
?



返回的數(shù)組中包括了以下信息:
“url” //資源網絡地址
“content_type” //內容編碼
“http_code” //HTTP狀態(tài)碼
“header_size” //header的大小
“request_size” //請求的大小
“filetime” //文件創(chuàng)建時間
“ssl_verify_result” //SSL驗證結果
“redirect_count” //跳轉技術
“total_time” //總耗時
“namelookup_time” //DNS查詢耗時
“connect_time” //等待連接耗時
“pretransfer_time” //傳輸前準備耗時
“size_upload” //上傳數(shù)據的大小
“size_download” //下載數(shù)據的大小
“speed_download” //下載速度
“speed_upload” //上傳速度
“download_content_length”//下載內容的長度
“upload_content_length” //上傳內容的長度
“starttransfer_time” //開始傳輸?shù)臅r間
“redirect_time”//重定向耗時

基于瀏覽器的重定向

在第一個例子中,我們將提供一段用于偵測服務器是否有基于瀏覽器的重定向的代碼。例如,有些網站會根據是否是手機瀏覽器甚至用戶來自哪個國家來重定向網頁。

我們利用 CURLOPT_HTTPHEADER 選項來設定我們發(fā)送出的HTTP請求頭信息(http headers),包括user agent信息和默認語言。然后我們來看看這些特定網站是否會把我們重定向到不同的URL。

以下為引用的內容:

// 測試用的URL$urls = array("http://www.cnn.com","http://www.mozilla.com","http://www.facebook.com");// 測試用的瀏覽器信息$browsers = array("standard" => array ("user_agent" => "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)","language" => "en-us,en;q=0.5"),"iphone" => array ("user_agent" => "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A537a Safari/419.3","language" => "en"),"french" => array ("user_agent" => "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; GTB6; .NET CLR 2.0.50727)","language" => "fr,fr-FR;q=0.5"));foreach ($urls as $url) {echo "URL: $url\n";foreach ($browsers as $test_name => $browser) {$ch = curl_init();// 設置 urlcurl_setopt($ch, CURLOPT_URL, $url);// 設置瀏覽器的特定headercurl_setopt($ch, CURLOPT_HTTPHEADER, array("User-Agent: {$browser['user_agent']}","Accept-Language: {$browser['language']}"));// 頁面內容我們并不需要curl_setopt($ch, CURLOPT_NOBODY, 1);// 只需返回HTTP headercurl_setopt($ch, CURLOPT_HEADER, 1);// 返回結果,而不是輸出它curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);// 有重定向的HTTP頭信息嗎?if (preg_match("!Location: (.*)!", $output, $matches)) {echo "$test_name: redirects to $matches[1]\n";} else {echo "$test_name: no redirection\n";}}echo "\n\n";}
登錄后復制
?


首先,我們建立一組需要測試的URL,接著指定一組需要測試的瀏覽器信息。最后通過循環(huán)測試各種URL和瀏覽器匹配可能產生的情況。

因為我們指定了cURL選項,所以返回的輸出內容則只包括HTTP頭信息(被存放于 $output 中)。利用一個簡單的正則,我們檢查這個頭信息中是否包含了“Location:”字樣。

運行這段代碼應該會返回如下結果:




PHP速學教程(入門到精通)
PHP速學教程(入門到精通)

PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!

下載
來源:php中文網
本文內容由網友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網:公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網訂閱號
每天精選資源文章推送
PHP中文網APP
隨時隨地碎片化學習
PHP中文網抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://m.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號