How to remove HTTP headers from CURL response?

前端 未结 10 1166
被撕碎了的回忆
被撕碎了的回忆 2020-12-13 17:26

I have a php script that returns just plain text without any html. Now I want to make a cURL request to that script and I get the following response:

<
10条回答
  •  北荒
    北荒 (楼主)
    2020-12-13 17:41

    Make sure you put set the header flag:

            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_HEADER, true );
            curl_setopt($ch, CURLOPT_TIMEOUT, Constants::HTTP_TIMEOUT);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, Constants::HTTP_TIMEOUT);
            $response = curl_exec($ch); 
    

    Do this after your curl call:

    $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $headerstring = substr($response, 0, $header_size);
    $body = substr($response, $header_size);
    

    EDIT: If you'd like to have header in assoc array, add something like this:

        $headerArr = explode(PHP_EOL, $headerstring);
        foreach ($headerArr as $headerRow) {
            preg_match('/([a-zA-Z\-]+):\s(.+)$/',$headerRow, $matches);
            if (!isset($matches[0])) {
                continue;
            }
            $header[$matches[1]] = $matches[2];
        }
    

    Result print_r($header):

    (
        [content-type] => application/json
        [content-length] => 2848
        [date] => Tue, 06 Oct 2020 10:29:33 GMT
        [last-modified] => Tue, 06 Oct 2020 10:17:17 GMT
    )
    

    Don't forget to close connection curl_close($ch);

提交回复
热议问题