Bobs-Bits.com - where stupidity meets reality

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"], $partsPREG_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;}
?>