首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP cURL 取得回應內容的正確姿勢:CURLOPT_RETURNTRANSFER

     編輯:PHP 綜合知識

關鍵選項

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 1 = 回傳字串,0 = 直接輸出

完整流程

$ch = curl_init('https://api.example.com/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 僅測試用,生產請驗證憑證

$response = curl_exec($ch);

if ($response === false) {
    $errno = curl_errno($ch);
    $error = curl_error($ch);
    echo "cURL 錯誤 ($errno): $error";
} else {
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
    echo "HTTP $httpCode\n";
    echo "Type: $contentType\n";
    var_dump($response); // 這裡拿到完整回應字串
}

curl_close($ch);

常見誤區

  • 忘記設定 CURLOPT_RETURNTRANSFER,導致 curl_exec() 直接輸出且回傳 true,無法拿到內容。
  • 多執行緒 curl_multi_* 時,需對每個 handle 設定此選項,並用 curl_multi_getcontent($ch) 取得內容。
  • 大回應記憶體不足 → 改用 CURLOPT_WRITEFUNCTION 串流寫入檔案。

進階:同時取得 Header 與 Body

curl_setopt($ch, CURLOPT_HEADER, 1); // 回傳包含 Header
$response = curl_exec($ch);
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $headerSize);
$body = substr($response, $headerSize);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved