2011-12-15 15 views
1

有類似的字符串:如何在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

回答

4

不,您必須使用header()。您可以將字符串分成幾行,逐行逐行呼叫header(),直到您遇到空行,然後回覆剩下的行。

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標準,這將完美工作。