Como obter cabeçalhos de resposta HTTP e corpo da resposta em uma única requisição com cURL em PHP?
Olá a todos! Estou escrevendo um parser em PHP usando cURL. Preciso obter não apenas o conteúdo da página (corpo da resposta), mas também os cabeçalhos HTTP (por exemplo, Content-Type, Status Code, Location em redirecionamentos).
O problema é que quando uso curl_exec(), obtenho apenas o corpo da resposta. Se eu ativar a opção CURLOPT_HEADER => true, o resultado exibe tudo junto — cabeçalhos e corpo — e preciso analisar manualmente com explode(), o que é muito inconveniente.
Aqui está meu código atual:
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
curl_close($ch);
// Preciso separar de forma improvisada
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
Essa abordagem funciona, mas parece suja. Além disso...