Comment obtenir les en-têtes de réponse HTTP et le corps de la réponse dans une seule requête avec cURL en PHP ?
Bonjour à tous ! J'écris un parser en PHP utilisant cURL. J'ai besoin d'obtenir non seulement le contenu de la page (le corps de la réponse), mais aussi les en-têtes HTTP (par exemple, Content-Type, Status Code, Location lors des redirections).
Le problème est que lorsque j'utilise curl_exec(), je reçois uniquement le corps de la réponse. Si j'active l'option CURLOPT_HEADER => true, le résultat affiche tout ensemble — les en-têtes et le corps — et je dois les séparer manuellement avec explode(), ce qui est très peu pratique.
Voici mon code actuel :
$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);
// Je dois séparer de manière bancale
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
Cette méthode fonctionne, mais elle me semble sale. De plus,