4

在 PHP 中,我们可以通过以下方式设置 Content-Type:

header('Content-Type: text/plain');

但是,如果我处理需要显示错误消息的 PHP 类,错误消息的格式根据内容类型显示,例如,如果页面是text/html,则显示 HTML 格式的错误消息;否则,显示纯文本错误消息。

是否有任何功能/片段可用于检测页面 Content-Type ?

注意:鉴于 PHP 类文件通过以下方式“附加”到页面上require_once()

更新:根据@Tamil 的回答,我进行了一个简短的测试:

<?php
header('Content-Type: text/plain');
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
echo finfo_file($finfo, __FILE__) . "\n";
finfo_close($finfo);
?>

它只返回text/x-php。但我希望结果会返回text/plain

4

1 回答 1

9

试用headers_list()功能:

<?php
header('Content-Type: text/plain');

$headers = headers_list();

var_dump($headers);
?>

显示(在我的情况下):

array(2) {
  [0]=>
  string(23) "X-Powered-By: PHP/5.4.5"
  [1]=>
  string(24) "Content-Type: text/plain"
}

要标准化结果数组,您可以使用:

<?php
header('Content-Type: text/plain');

$headers = headers_list();

foreach($headers as $index => $value) {
    list($key, $value) = explode(': ', $value);

    unset($headers[$index]);

    $headers[$key] = $value;
}

var_dump($headers);
?>

显示:

array(2) {
  ["X-Powered-By"]=>
  string(9) "PHP/5.4.5"
  ["Content-Type"]=>
  string(10) "text/plain"
}

因此,Content-Type可以像这样获得具有标准化数组的标头:

echo $headers['Content-Type'];
于 2013-04-24T02:52:31.837 回答