如何输出标题与正文一起在PHP


How to output headers together with body in PHP?

有这样一个字符串:

HTTP/1.1 200 OK
Date: Thu, 15 Dec 2011 12:23:25 GMT
Server: Microsoft-IIS/6.0
Content-Length: 2039
Content-Type: text/html

<!DOCTYPE html>
...

是否可以将其发送为头+体与一个命令?我知道您可以使用header和echo/print/printf来输出主体,但由于我所拥有的字符串正是我所编写的形式,因此要使用这些函数,我必须将其解析为头和主体。

我试过写信给php://output,但它似乎认为标题是主体。

不行,你必须用header()。您可以将字符串分成行,逐个遍历行,为每一行调用header(),直到遇到空行,然后返回其余部分。

没有办法(AFAIK)将报头作为原始字符串输出- PHP和web服务器在后台默默地处理此问题,以确保响应有效-但拆分为报头/正文很容易:

function output_response_string ($responseStr) { 
  // Split the headers from the body and fetch the headers
  $parts = explode("'r'n'r'n", $responseStr);
  $headers = array_shift($parts);
  // Send headers
  foreach (explode("'r'n", $headers) as $header) {
    $header = trim($header);
    if ($header) header($header);
  }
  // Send body
  echo implode("'r'n'r'n", $parts);
}

只要您的响应字符串符合HTTP标准,这将完美地工作。