2013-07-15 49 views
4

爲了「安全原因」,我需要獲取PHP的內容類型。例如,如果您使用了函數header("Content-type: text/html; charset=utf-8"),那麼在未來執行時,如何分別接收內容類型(text/html)和字符集(utf-8)?從頭文件獲取PHP內容類型()

我的真正的問題是知道正在使用和修改哪些字符集它,如果需要的話,不必重新定義的信息Content-type。也就是說,如果內容類型爲application/xml,請保留它,但只能更改僅包含字符集。

Ex。

Original: Content-type: text/html 
First:  -> set to application/xml. 
      Content-type: application/xml 
Second:  -> set charset. 
      Content-type: application/xml; charset=utf-8 
Third:  -> set to text/html 
      Content-type: text/html; charset=utf-8 

怎麼可能?

+0

你想抓住'Accept'標頭 – DevZer0

回答

7

您可以使用函數headers_list來獲取響應標頭。從那裏應該只是解析出相關的標題並在需要時重寫。

$headers = headers_list(); 
    // get the content type header 
    foreach($headers as $header){ 
     if (substr(strtolower($header),0,13) == "content-type:"){ 
       list($contentType, $charset) = explode(";", trim(substr($header, 14), 2)); 
       if (strtolower(trim($charset)) != "charset=utf-8"){ 
        header("Content-Type: ".trim($contentType)."; charset=utf-8"); 
       } 
     } 
    } 
0

你也可以使用函數get_headers()

http://php.net/manual/en/function.get-headers.php

請記住,你不能 「只修改」 內容類型。如果你想改變它,你必須再次調用header()函數。

+1

get_headers得到的原始請求標頭....我相信這個op是在響應標頭之後。 – Orangepill