如何在PHP中将body与body一起输出?

问题描述:

有类似的字符串:如何在PHP中将body与body一起输出?

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,但它似乎认为标题是正文。

+0

你应该看看http://php.net/manual/en/book.curl.php – Cyclonecode 2011-12-15 12:33:33

+0

@Krister Andersson - cURL是一个HTTP客户端,据我所知你不能用它来发布一个HTTP响应。 – Quentin 2011-12-15 12:35:09

+0

@Quentin - 我正在阅读“是否可以将它作为标题+正文发送”,也许我误解了? – Cyclonecode 2011-12-15 12:42:36

不,您必须使用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标准,这将完美工作。