2011-12-15 11 views
1

のような文字列があります: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> 
... 

ですが1つのコマンドで、ヘッダ+ボディとして送信することは可能でしょうか?私はheaderとecho/print/printfを使って本文を出力することができますが、私が書いた形式の文字列はこれらの関数を使うためにヘッダと本文に解析する必要があるからです。

私はphp://outputに書き込もうとしましたが、ヘッダーがボディだと思われるようです。

+0

http://php.net/manual/en/book.curl.phpをご覧ください。 – Cyclonecode

+0

@Krister Andersson - cURLはHTTPクライアントですが、問題を解決するために使用することはできませんHTTPレスポンス。 – Quentin

+0

@クエンティン - 私は "ヘッダー+ボディーとして送ることは可能ですか?"と読んでいました。おそらく私は誤解していましたか? – Cyclonecode

答えて

4

いいえ、header()を使用する必要があります。文字列を行に分割し、行を1つずつ歩いて空の行を満たしてから残りの行をエコーするまでそれぞれheader()を呼び出します。

+0

下記のoutput_response_string()関数が完璧に動作することを確認してください – malhal

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標準に準拠している限り、これは完全に機能します。

+0

優れたコーディングは、その機能はすばらしいおかげです! – malhal

関連する問題