Content-Type negotiation
Checks the HTTP_ACCEPT header to determine which Content-Type should be used for the document.
Usage
<?php
$contentType = get_preferred_content_type();
header("Content-Type: $contentType");
?>
Source
<?php
function get_preferred_content_type($preferred = "application/xhtml+xml") {
$legacy = "text/html";
$legacyQ = false;
$preferredQ = false;
if($preferred != $legacy) {
$parts = array();
preg_match_all("/(.*?);(q=\d\.\d)?,?/", $_SERVER["HTTP_ACCEPT"], $parts, PREG_SET_ORDER);
foreach($parts as $group) {
$qval = isset($group[2]) ? floatval(str_replace("q=", "", $group[2])) : false;
if(!$legacyQ && strpos($group[1], $legacy) > -1) {
$legacyQ = $qval;
}
if(strpos($group[1], $preferred) > -1) {
if($qval === false || $qval > 0) {
$preferredQ = $qval;
}
}
}
}
return $preferredQ >= $legacyQ ? $preferred : $legacy;}
?>
