本文目錄一覽:
- 1、PHP中的curl_exec
- 2、在 php curl返回
- 3、php 中 怎麼讓curl_exec 以數組形式返回
- 4、php curl_exec無法返回結果
- 5、php 中 怎麼讓curl_exec 以數組形式返回
- 6、請教關於curl_exec返回值的問題~~~ – PHP進階討論
PHP中的curl_exec
curl_exec
(PHP 4 = 4.0.2, PHP 5) curl_exec — 執行一個cURL會話
可以參考官方網站範例:
你要用CURL,就跟Session一樣,要先初始化 curl_init(),不然PHP部會知道該怎麼運作。初始化完成之後就要開始設定參數,就像是要不要顯示出來。當你參數設定完畢,就要開始執行這個CURL。最後就要關閉這個CURL。這就算是一個簡單的CURL運用,當然還有更多變化。
實際例子:
?php
// 創建一個cURL資源
$ch = curl_init();
// 設置URL和相應的選項
curl_setopt($ch, CURLOPT_URL, “
);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 抓取URL並把它傳遞給瀏覽器
curl_exec($ch);
// 關閉cURL資源,並且釋放系統資源
curl_close($ch);
?
如使用mysql一樣,首先,我們必須先建立一個「curl」的連線,也因此,必須使用到 curl_init() 這個函式。而為了怕建立連線忘了關閉。因此,必須先寫好關閉的函式,curl_close($ch)。
不過大部分HTML標籤都可以抓下來,並且顯示,可是有部分可能與資料加密性或是轉址的部分,就無法正常顯示。
/ 建立CURL連線
$ch = curl_init();
// 設定擷取的URL網址
curl_setopt($ch, CURLOPT_URL, “
);
curl_setopt($ch, CURLOPT_HEADER, false);
//將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 執行
$temp=curl_exec($ch);
// 關閉CURL連線
curl_close($ch)
加上curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);之後,他會將curl_exec()獲取的訊息以文件流的形式返回傳給$temp,而不是直接輸出。如果要顯示出畫面的話就加上 echo $temp;就可以了。
下面先分享一個比較常用的,傳遞參數的部分。
簡易的使用語法(GET):
// 建立CURL連線
$ch = curl_init();
// 設定擷取的URL網址
curl_setopt($ch, CURLOPT_URL, “
);
curl_setopt($ch, CURLOPT_HEADER, false);
//將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
// 執行
$temp=curl_exec($ch);
// 關閉CURL連線
curl_close($ch)
Get參數可以直接在網址傳遞例如網址後面加的?SomeVar=test,但是一旦資料量很大,用POST送還是比較適合。
簡易的使用語法(POST):
// 建立CURL連線
$ch = curl_init();
// 設定擷取的URL網址
curl_setopt($ch, CURLOPT_URL, “
);
curl_setopt($ch, CURLOPT_HEADER, false);
//將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//設定要傳的 變數A=值A 變數B=值B (中間要用符號串接)
$PostData = “a=abcb=def”;
//設定CURLOPT_POST 為 1或true,表示要用POST方式傳遞
curl_setopt($ch, CURLOPT_POST, 1);
//CURLOPT_POSTFIELDS 後面則是要傳接的POST資料。
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
// 執行
$temp=curl_exec($ch);
// 關閉CURL連線
curl_close($ch)
以上的傳遞方式在某些狀況下很好用,譬如說,沒有設計完整的會員申請系統,就可以利用上面這些程式碼,做一個自動註冊申請機
在 php curl返回
給你個我寫的curl方法。
/**
* curl模擬提交
* @param string $url 網址
* @param array/string $opt 提交參數
* @param string $header 取回的頭信息
* @param string $redirect 是否重定向
* @param boolean $ssl 驗證https證書
* @return [type] 返回信息
*/
function curl($url, $opt=’GET’, $header=null, $redirect=true, $ssl=false){
//初始化
$ch = curl_init($url);
//配置設置
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $ssl);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $redirect);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); #返回結果
curl_setopt($ch, CURLOPT_HEADER, true); #顯示協議頭
if(is_array($opt)){
//轉小寫
$opt = array_change_key_case($opt, CASE_LOWER);
//POST
if(isset($opt[‘type’]) strtoupper($opt[‘type’])==’POST’){
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, (isset($opt[‘data’]) ? $opt[‘data’] : ”));
}
//User-Agent
if(array_key_exists(‘ua’, $opt))
curl_setopt($ch, CURLOPT_USERAGENT, $opt[‘ua’]);
//Header
if(array_key_exists(‘header’, $opt)){
curl_setopt($ch, CURLOPT_HTTPHEADER, (array)$opt[‘header’]);
}
//Cookie
if(array_key_exists(‘cookie’, $opt))
curl_setopt($ch, CURLOPT_COOKIE, $opt[‘cookie’]);
//Referer
if(array_key_exists(‘referer’, $opt))
curl_setopt($ch, CURLOPT_REFERER, $opt[‘referer’]);
}else{
//僅POST
if(strtoupper((string)$opt) == ‘POST’)
curl_setopt($ch, CURLOPT_POST, true);
}
$result = curl_exec($ch);
if(curl_errno($ch)){
$result = curl_error($ch);
}else{
//獲取頭長度
$length = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
//取出頭信息
$header = substr($result, 0, $length);
//去掉頭信息
$result = substr($result, $length);
}
//釋放
curl_close($ch);
return $result;
}
php 中 怎麼讓curl_exec 以數組形式返回
可以將他返回的內容賦值給一個
變數
。只需再
前面
加上,curl_setopt($ch,CUROPT_RETURNTRANSFER,1);就可以將返回結果賦值給變數了。比如,$r=curl_exec($ch);這時返回的結果全部包含再$r中,想
什麼時候
輸出什麼時候輸出,如果不準備要他的結果,那麼就將前面的1換成0
php curl_exec無法返回結果
你要顯示是不是需要這個參數,你試試
// 設置curl 參數,要求結果保存到變數中還是輸出到屏幕上,false直接輸出到屏幕上。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return_data = curl_exec($ch);
curl_close($ch);
var_dump($return_data);
php 中 怎麼讓curl_exec 以數組形式返回
可以先看看PHP中的 curl_exec函數的說明
(PHP 4 = 4.0.2, PHP 5)
curl_exec — 執行一個cURL會話
說明
mixed curl_exec ( resource $ch )
執行給定的cURL會話。
這個函數應該在初始化一個cURL會話並且全部的選項都被設置後被調用。
參數
ch
由 curl_init() 返回的 cURL 句柄。
返回值
成功時返回 TRUE, 或者在失敗時返回 FALSE。 然而,如果 CURLOPT_RETURNTRANSFER選項被設置,函數執行成功時會返回執行的結果,失敗時返回 FALSE 。
我前兩天剛好用到過的兩種情況
//從返回結果中獲取指定的值
$res=curl_exec($ch);
$pa = ‘%ul class=”ul1″li本站主數據:(.*?)/li%si’;
preg_match($pa,$res,$r);
return $r[1];
//第二種 的返回結果是以json形式。
$res=json_decode(curl_exec($ch),true);
print_r($res);
請教關於curl_exec返回值的問題~~~ – PHP進階討論
[php]$curlObj = curl_init();curl_setopt($curlObj, CURLOPT_URL, $url); // 設置訪問的urlcurl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); //curl_exec將結果返回,而不是執行$result = curl_exec($curlObj);[/php]
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240063.html