有一个字符串:
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 :(得分:4)
不,你必须使用header()
。您可以将字符串拆分为多行,逐行调用每行调用header()
,直到遇到空行,然后回显其余部分。
答案 1 :(得分:4)
没有办法(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标准,这将完美地运行。