単一の PHP cURL リクエストで応答ヘッダーと本文を取得する
PHP の cURL ライブラリは、HTTP リクエストを実行する機能を提供し、さまざまな用途に使用できます。データの取得と通信のタスク。ただし、cURL を使用するときに遭遇する一般的な課題は、単一のリクエストで応答ヘッダーと本文の両方を取得する必要があることです。
デフォルトでは、CURLOPT_HEADER を true に設定すると、ヘッダーと本文の両方が結合されて応答に返されます。これにはさらに追加の処理が必要です。解析して個々のコンポーネントを抽出します。より効率的で安全なアプローチを実現するには、別の方法を使用できます。
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); // Execute the request $response = curl_exec($ch); // Extract header and body $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size);
このメソッドは、CURLINFO_HEADER_SIZE 情報を使用してヘッダーを本文から分離します。プロキシ サーバーや特定の種類のリダイレクトを処理する場合、このアプローチには制限がある可能性があることに注意してください。このような場合、信頼性を高めるために次のソリューションの使用を検討してください:
function get_headers_body($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); // Execute the request and get headers only $headers = curl_exec($ch); // Close the original handle curl_close($ch); // Set the necessary header information to a new handle $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); foreach (explode("\n", $headers) as $header) { // Remove set-cookie headers if (stripos($header, 'set-cookie') !== false) { continue; } // Add it to the request curl_setopt($ch, CURLOPT_HTTPHEADER, array($header)); } // Execute the request and get the body only $body = curl_exec($ch); // Close the handle curl_close($ch); return array( 'headers' => $headers, 'body' => $body ); }
このソリューションにより、ヘッダー取得プロセスをより詳細に制御でき、より信頼性の高い結果が保証されます。
以上が単一の PHP cURL リクエストで応答ヘッダーと本文の両方を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。