Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

Một giải pháp cho điều này đã được đăng trong các nhận xét tài liệu PHP: http://www.php.net/manual/en/function.curl-exec.php#80442

Ví dụ về mã:

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
// ...

$response = curl_exec($ch);

// Then, after your curl_exec call:
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);

CẢNH BÁO: Như đã lưu ý trong các bình luận dưới đây, điều này có thể không đáng tin cậy khi được sử dụng với các máy chủ proxy hoặc khi xử lý một số loại chuyển hướng nhất định. Câu trả lời của Geoffrey có thể xử lý những điều này một cách đáng tin cậy hơn. As noted in the comments below, this may not be reliable when used with proxy servers or when handling certain types of redirects. @Geoffrey's answer may handle these more reliably.

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

Laurent

85,4K75 Huy hiệu vàng276 Huy hiệu bạc414 Huy hiệu đồng75 gold badges276 silver badges414 bronze badges

Đã trả lời ngày 7 tháng 2 năm 2012 lúc 20:21Feb 7, 2012 at 20:21

Iblueiblueiblue

28.6K18 Huy hiệu vàng86 Huy hiệu bạc126 Huy hiệu đồng18 gold badges86 silver badges126 bronze badges

11

Nhiều giải pháp khác cung cấp chủ đề này không thực hiện chính xác.

  • Tách trên
    $ch = curl_init();
    $headers = [];
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    // this function is called by curl for each header received
    curl_setopt($ch, CURLOPT_HEADERFUNCTION,
      function($curl, $header) use (&$headers)
      {
        $len = strlen($header);
        $header = explode(':', $header, 2);
        if (count($header) < 2) // ignore invalid headers
          return $len;
    
        $headers[strtolower(trim($header[0]))][] = trim($header[1]);
        
        return $len;
      }
    );
    
    $data = curl_exec($ch);
    print_r($headers);
    
    7 không đáng tin cậy khi
    $ch = curl_init();
    $headers = [];
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    // this function is called by curl for each header received
    curl_setopt($ch, CURLOPT_HEADERFUNCTION,
      function($curl, $header) use (&$headers)
      {
        $len = strlen($header);
        $header = explode(':', $header, 2);
        if (count($header) < 2) // ignore invalid headers
          return $len;
    
        $headers[strtolower(trim($header[0]))][] = trim($header[1]);
        
        return $len;
      }
    );
    
    $data = curl_exec($ch);
    print_r($headers);
    
    8 đang bật hoặc khi máy chủ phản hồi với 100 mã RFC-7231, MDN.
  • Không phải tất cả các máy chủ đều tuân thủ các tiêu chuẩn và chỉ truyền
    $ch = curl_init();
    $headers = [];
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    // this function is called by curl for each header received
    curl_setopt($ch, CURLOPT_HEADERFUNCTION,
      function($curl, $header) use (&$headers)
      {
        $len = strlen($header);
        $header = explode(':', $header, 2);
        if (count($header) < 2) // ignore invalid headers
          return $len;
    
        $headers[strtolower(trim($header[0]))][] = trim($header[1]);
        
        return $len;
      }
    );
    
    $data = curl_exec($ch);
    print_r($headers);
    
    9 cho các dòng mới (và người nhận có thể loại bỏ
    function HandleHeaderLine( $curl, $header_line ) {
        echo "
    YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
    0 trong trình kết thúc dòng) Q & A.
  • Phát hiện kích thước của các tiêu đề thông qua
    function HandleHeaderLine( $curl, $header_line ) {
        echo "
    YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
    1 cũng không phải lúc nào cũng đáng tin cậy, đặc biệt là khi các proxy được sử dụng Curl-1204 hoặc trong một số kịch bản chuyển hướng tương tự.

Phương pháp chính xác nhất là sử dụng

function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
2.

Dưới đây là một phương pháp rất sạch sẽ thực hiện điều này bằng cách sử dụng đóng PHP. Nó cũng chuyển đổi tất cả các tiêu đề thành chữ thường để xử lý nhất quán trên các máy chủ và phiên bản HTTP.

Phiên bản này sẽ giữ lại các tiêu đề trùng lặp

Điều này tuân thủ RFC822 và RFC2616, vui lòng không sử dụng các hàm chuỗi

function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
3 (và tương tự), nó không chỉ không chính xác mà còn là vấn đề bảo mật RFC-7230!

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

Hakre

188K49 Huy hiệu vàng419 Huy hiệu bạc807 Huy hiệu đồng49 gold badges419 silver badges807 bronze badges

Đã trả lời ngày 14 tháng 12 năm 2016 lúc 5:38Dec 14, 2016 at 5:38

GeoffreygeoffreyGeoffrey

10,4K3 Huy hiệu vàng31 Huy hiệu bạc44 Huy hiệu đồng3 gold badges31 silver badges44 bronze badges

25

Curl có một tùy chọn tích hợp cho việc này, được gọi là Curlopt_headerfunction. Giá trị của tùy chọn này phải là tên của hàm gọi lại. Curl sẽ chuyển tiêu đề (và chỉ tiêu đề!) Cho hàm gọi lại này, từng dòng (vì vậy hàm sẽ được gọi cho mỗi dòng tiêu đề, bắt đầu từ đầu phần tiêu đề). Hàm gọi lại của bạn sau đó có thể làm bất cứ điều gì với nó (và phải trả về số byte của dòng đã cho). Đây là mã làm việc được thử nghiệm:

function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);

Những điều trên hoạt động với mọi thứ, các giao thức và proxy khác nhau, và bạn không cần phải lo lắng về kích thước tiêu đề hoặc đặt nhiều tùy chọn Curl khác nhau.

P.S .: Để xử lý các đường tiêu đề bằng phương thức đối tượng, hãy làm điều này:

curl_setopt($ch, CURLOPT_HEADERFUNCTION, array($object, 'methodName'))

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

Hakre

188K49 Huy hiệu vàng419 Huy hiệu bạc807 Huy hiệu đồng49 gold badges419 silver badges807 bronze badges

Đã trả lời ngày 14 tháng 12 năm 2016 lúc 5:38Aug 4, 2014 at 11:51

GeoffreygeoffreySkacc

10,4K3 Huy hiệu vàng31 Huy hiệu bạc44 Huy hiệu đồng2 gold badges12 silver badges16 bronze badges

7

Curl có một tùy chọn tích hợp cho việc này, được gọi là Curlopt_headerfunction. Giá trị của tùy chọn này phải là tên của hàm gọi lại. Curl sẽ chuyển tiêu đề (và chỉ tiêu đề!) Cho hàm gọi lại này, từng dòng (vì vậy hàm sẽ được gọi cho mỗi dòng tiêu đề, bắt đầu từ đầu phần tiêu đề). Hàm gọi lại của bạn sau đó có thể làm bất cứ điều gì với nó (và phải trả về số byte của dòng đã cho). Đây là mã làm việc được thử nghiệm:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
$response = curl_exec($ch); 
list($header, $body) = explode("\r\n\r\n", $response, 2);

Những điều trên hoạt động với mọi thứ, các giao thức và proxy khác nhau, và bạn không cần phải lo lắng về kích thước tiêu đề hoặc đặt nhiều tùy chọn Curl khác nhau.

P.S .: Để xử lý các đường tiêu đề bằng phương thức đối tượng, hãy làm điều này:4 silver badges5 bronze badges

Đã trả lời ngày 7 tháng 2 năm 2012 lúc 20:21Feb 7, 2012 at 20:21

user1031143user1031143user1031143

Iblueiblue1 gold badge10 silver badges16 bronze badges

5

28.6K18 Huy hiệu vàng86 Huy hiệu bạc126 Huy hiệu đồng

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);

Nhiều giải pháp khác cung cấp chủ đề này không thực hiện chính xác.Mar 24, 2014 at 21:41

pr1001pr1001pr1001

Tách trên

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
7 không đáng tin cậy khi
$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
8 đang bật hoặc khi máy chủ phản hồi với 100 mã RFC-7231, MDN.16 gold badges76 silver badges123 bronze badges

4

Không phải tất cả các máy chủ đều tuân thủ các tiêu chuẩn và chỉ truyền

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
9 cho các dòng mới (và người nhận có thể loại bỏ
function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
0 trong trình kết thúc dòng) Q & A.

  • Phát hiện kích thước của các tiêu đề thông qua

    function HandleHeaderLine( $curl, $header_line ) {
        echo "
    YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
    1 cũng không phải lúc nào cũng đáng tin cậy, đặc biệt là khi các proxy được sử dụng Curl-1204 hoặc trong một số kịch bản chuyển hướng tương tự.

  • Phương pháp chính xác nhất là sử dụng

    function HandleHeaderLine( $curl, $header_line ) {
        echo "
    YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
    2.

Dưới đây là một phương pháp rất sạch sẽ thực hiện điều này bằng cách sử dụng đóng PHP. Nó cũng chuyển đổi tất cả các tiêu đề thành chữ thường để xử lý nhất quán trên các máy chủ và phiên bản HTTP.

Phiên bản này sẽ giữ lại các tiêu đề trùng lặp

Điều này tuân thủ RFC822 và RFC2616, vui lòng không sử dụng các hàm chuỗi

function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
3 (và tương tự), nó không chỉ không chính xác mà còn là vấn đề bảo mật RFC-7230!Jun 20, 2014 at 11:03

HakreCyril H.

188K49 Huy hiệu vàng419 Huy hiệu bạc807 Huy hiệu đồng1 silver badge2 bronze badges

1

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

$parts = explode("\r\n\r\nHTTP/", $response);
$parts = (count($parts) > 1 ? 'HTTP/' : '').array_pop($parts);
list($headers, $body) = explode("\r\n\r\n", $parts, 2);

Đã trả lời ngày 14 tháng 12 năm 2016 lúc 5:38

Geoffreygeoffrey

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);

$parts = preg_split("@\r?\n\r?\nHTTP/@u", $response);
$parts = (count($parts) > 1 ? 'HTTP/' : '').array_pop($parts);
list($headers, $body) = preg_split("@\r?\n\r?\n@u", $parts, 2);

10,4K3 Huy hiệu vàng31 Huy hiệu bạc44 Huy hiệu đồngJul 31, 2013 at 13:25

Curl có một tùy chọn tích hợp cho việc này, được gọi là Curlopt_headerfunction. Giá trị của tùy chọn này phải là tên của hàm gọi lại. Curl sẽ chuyển tiêu đề (và chỉ tiêu đề!) Cho hàm gọi lại này, từng dòng (vì vậy hàm sẽ được gọi cho mỗi dòng tiêu đề, bắt đầu từ đầu phần tiêu đề). Hàm gọi lại của bạn sau đó có thể làm bất cứ điều gì với nó (và phải trả về số byte của dòng đã cho). Đây là mã làm việc được thử nghiệm:Enyby

Những điều trên hoạt động với mọi thứ, các giao thức và proxy khác nhau, và bạn không cần phải lo lắng về kích thước tiêu đề hoặc đặt nhiều tùy chọn Curl khác nhau.2 gold badges31 silver badges41 bronze badges

8

P.S .: Để xử lý các đường tiêu đề bằng phương thức đối tượng, hãy làm điều này:

$response = curl_exec($ch);
$x = explode("\r\n\r\n", $v, 3);
$header=http_parse_headers($x[0]);
if ($header=['Response Code']==100){ //use the other "header"
    $header=http_parse_headers($x[1]);
    $body=$x[2];
}else{
    $body=$x[1];
}

Đã trả lời ngày 4 tháng 8 năm 2014 lúc 11:51

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

Skaccskacc

1.6662 huy hiệu vàng12 Huy hiệu bạc16 Huy hiệu đồng6 gold badges75 silver badges96 bronze badges

Đây có phải là những gì bạn đang tìm kiếm?May 29, 2014 at 17:55

papsyRoy

4334 Huy hiệu bạc5 Huy hiệu Đồng4 silver badges6 bronze badges

0

8281 Huy hiệu vàng10 Huy hiệu bạc16 Huy hiệu đồng

curl_setopt($ch, CURLOPT_HEADER, 1); // we need this to get headers back
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);

// $output contains the output string
$output = curl_exec($ch);

$lines = explode("\n",$output);

$out = array();
$headers = true;

foreach ($lines as $l){
    $l = trim($l);

    if ($headers && !empty($l)){
        if (strpos($l,'HTTP') !== false){
            $p = explode(' ',$l);
            $out['Headers']['Status'] = trim($p[1]);
        } else {
            $p = explode(':',$l);
            $out['Headers'][$p[0]] = trim($p[1]);
        }
    } elseif (!empty($l)) {
        $out['Data'] = $l;
    }

    if (empty($l)){
        $headers = false;
    }
}

Nếu bạn đặc biệt muốn

function HandleHeaderLine( $curl, $header_line ) {
    echo "
YEAH: ".$header_line; // or do whatever return strlen($header_line); } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADERFUNCTION, "HandleHeaderLine"); $body = curl_exec($ch);
4, có một tùy chọn Curl đặc biệt để truy xuất nó:Feb 28, 2019 at 11:52

Đã trả lời ngày 24 tháng 3 năm 2014 lúc 21:41Antony

21.4K16 Huy hiệu vàng76 Huy hiệu bạc123 Huy hiệu Đồng27 silver badges28 bronze badges

Chỉ cần đặt các tùy chọn:

Curlopt_header, 0

Curlopt_returntransfer, 1

và sử dụng curl_getinfo với curlinfo_http_code (hoặc không có opt param và bạn sẽ có một mảng kết hợp với tất cả các thông tin bạn muốn)Jul 15, 2016 at 14:41

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

1

Thêm tại: http://php.net/manual/fr/function.curl-getinfo.php

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
0

Đã trả lời ngày 4 tháng 8 năm 2017 lúc 11:36Aug 4, 2017 at 11:36

K-GunK-GunK-Gun

Huy hiệu vàng 11K255 Huy hiệu bạc57 Huy hiệu đồng2 gold badges55 silver badges57 bronze badges

Một cách tốt hơn là sử dụng phản hồi Curl dài dòng có thể được đưa vào một luồng tạm thời. Sau đó, bạn có thể tìm kiếm phản hồi cho tên tiêu đề. Điều này có thể sử dụng một vài điều chỉnh nhưng nó hoạt động cho tôi:

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
1

Đã trả lời ngày 9 tháng 3 năm 2021 lúc 14:16Mar 9, 2021 at 14:16

0

Cải thiện Geoffreys Trả lời:

Tôi không thể có được độ dài phù hợp cho tiêu đề với ________ 32- Tôi phải tự mình tính toán kích thước tiêu đề.

Ngoài ra, một số cải tiến cho khả năng đọc tốt hơn.

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
2

Đã trả lời ngày 19 tháng 8 năm 2021 lúc 6:30Aug 19, 2021 at 6:30

Hướng dẫn curl response headers php - cuộn tròn tiêu đề phản hồi php

lén lút lén lútsneaky

4291 Huy hiệu vàng8 Huy hiệu bạc18 Huy hiệu đồng1 gold badge8 silver badges18 bronze badges

Hãy thử điều này nếu bạn đang sử dụng GET:

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
3

Đã trả lời ngày 12 tháng 1 năm 2021 lúc 8:46Jan 12, 2021 at 8:46

Trả về các tiêu đề phản hồi với tham số tham chiếu:

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
4

Đã trả lời ngày 12 tháng 11 năm 2014 lúc 11:32Nov 12, 2014 at 11:32

DIYISMDIYISMdiyism

12.2k5 Huy hiệu vàng46 Huy hiệu bạc45 Huy hiệu Đồng5 gold badges46 silver badges45 bronze badges

4

Nếu bạn không thực sự cần phải sử dụng Curl;

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
5

Đầu ra nào

$ch = curl_init();
$headers = [];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// this function is called by curl for each header received
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
  function($curl, $header) use (&$headers)
  {
    $len = strlen($header);
    $header = explode(':', $header, 2);
    if (count($header) < 2) // ignore invalid headers
      return $len;

    $headers[strtolower(trim($header[0]))][] = trim($header[1]);
    
    return $len;
  }
);

$data = curl_exec($ch);
print_r($headers);
6

Xem http://php.net/manual/en/reserved.variables.httpresponseheader.php

Đã trả lời ngày 24 tháng 2 năm 2015 lúc 20:39Feb 24, 2015 at 20:39

BevanbevanBevan

4634 Huy hiệu bạc4 Huy hiệu đồng4 silver badges4 bronze badges

1