多年經驗好評不斷!實惠價格,專業檢測
處理頂樓防水、牆壁滲水、壁癌剝落問題!
窗簾壁紙居家空間、社區大樓、商務辦公室清潔
包辦各式服務,可依客戶需求彈性規劃!

首頁  •  tw 論壇 • 程式設計討論     • 

[php] 如何使用PHP CURL,基礎教學。

房東:陳姐
發表時間:2012-07-17
[檢舉]


如果要用php來抓取網頁,一般人最常想到的就是「fopen」這個函式了。但現在有了更強大的函式,「curl」,至於這個函式怎麼用呢?就往下看吧!至於怎麼安裝,可以參考[程式][PHP] 安裝AppServe,如何啟用php_curl。


如使用mysql一樣,首先,我們必須先建立一個「curl」的連線,也因此,必須使用到 curl_init() 這個函式。而為了怕建立連線忘了關閉。因此,必須先寫好關閉的函式,curl_close($ch)。










// 建立CURL連線

$ch = curl_init();


// 設定擷取的URL網址

curl_setopt($ch, CURLOPT_URL, "http://tw.yahoo.com/");

curl_setopt($ch, CURLOPT_HEADER, false);


// 執行

curl_exec($ch);


// 關閉CURL連線

curl_close($ch)




\"\"


不過大部分HTML標籤都可以抓下來,並且顯示,可是有部分可能與資料加密性或是轉址的部分,就無法正常顯示。


這段語法執行之後,你會發現到你是直接把Yahoo的網頁直接顯示出來,這樣對撰寫程式其實並沒有太大幫助,把還沒處理過的資料丟出來是沒有用的。









// 建立CURL連線

$ch = curl_init();


// 設定擷取的URL網址

curl_setopt($ch, CURLOPT_URL, "http://tw.yahoo.com/");

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;就可以了。


結論:

到這邊簡言之,如果你要用CURL,就跟Session一樣,要先初始化 curl_init(),不然PHP部會知道該怎麼運作。初始化完成之後就要開始設定參數,就像是要不要顯示出來。或是其他相關的,詳細可以參考http://tw2.php.net/manual/en/function.curl-setopt.php。當你參數設定完畢,就要開始執行這個CURL。最後就要關閉這個CURL。這就算是一個簡單的CURL運用,當然還有更多變化。以後再慢慢分享。下面先分享一個比較常用的,傳遞參數的部分。


簡易的使用語法(GET):









// 建立CURL連線

$ch = curl_init();


// 設定擷取的URL網址

curl_setopt($ch, CURLOPT_URL, "http://localhost/SamplePath?SomeVar=test");

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, "http://localhost/SamplePath?SomeVar=test");

curl_setopt($ch, CURLOPT_HEADER, false);


//將curl_exec()獲取的訊息以文件流的形式返回,而不是直接輸出。

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);


//設定要傳的 變數A=值A & 變數B=值B (中間要用&符號串接)

$PostData = "a=abc&b=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)



以上的傳遞方式在某些狀況下很好用,譬如說,沒有設計完整的會員申請系統,就可以利用上面這些程式碼,做一個自動註冊申請機,至於這樣有什麼好玩,我就不知道了。


 


http://expect7.pixnet.net/blog/post/36428081-%5B%E7%A8%8B%E5%BC%8F%5D%5Bphp%5D-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8php-curl%EF%BC%8C%E5%9F%BA%E7%A4%8E%E6%95%99%E5%AD%B8%E3%80%82





  • 贊助網站       

    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!
    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務



  •  共 0 人回應

    姓名:
    佈告內容: