Björn schrieb einen Artikel über „unechtes“ XHTML & „Tagsoups“, da heutige (X)HTML-Seiten der Kompatiblität-halber meist als text/html
ausgeliefert werden. Ein kleines php-Workaround gibt es jedoch im XHTMLFORUM, zumindest um wenigstens application/xhtml+xml
-fähigen Browsern den richtigen Content-Type auszuliefern:
<?php
function ua_accepts_xhtml() {
/* Prüft, ob an den UA XHTML ausgeliefert werden darf.
* Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */
/* In dubio pro HTML. */
$xhtml = FALSE;
$check_pattern = '|application/xhtml+xml(?!s*;s*q=0)|';
/* Behauptet der UA, XHTML zu können? */
if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and
isset($_SERVER['HTTP_ACCEPT']) and
preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) {
$xhtml = TRUE;
}
/* Ältere Geckos haben ein paar Crashbugs mit XHTML. */
if(isset($_SERVER['HTTP_USER_AGENT'])) {
if(preg_match("|rv:0.9|", $_SERVER['HTTP_USER_AGENT'])) {
$xhtml = FALSE;
}
}
return $xhtml;
}
/* Anwendung. */
$content_type = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html';
header('Content-Type: ' . $content_type . ';charset=utf-8');
header('Vary: Accept');
?> |
<?php
function ua_accepts_xhtml() {
/* Prüft, ob an den UA XHTML ausgeliefert werden darf.
* Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */
/* In dubio pro HTML. */
$xhtml = FALSE;
$check_pattern = '|application/xhtml+xml(?!s*;s*q=0)|';
/* Behauptet der UA, XHTML zu können? */
if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and
isset($_SERVER['HTTP_ACCEPT']) and
preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) {
$xhtml = TRUE;
}
/* Ältere Geckos haben ein paar Crashbugs mit XHTML. */
if(isset($_SERVER['HTTP_USER_AGENT'])) {
if(preg_match("|rv:0.9|", $_SERVER['HTTP_USER_AGENT'])) {
$xhtml = FALSE;
}
}
return $xhtml;
}
/* Anwendung. */
$content_type = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html';
header('Content-Type: ' . $content_type . ';charset=utf-8');
header('Vary: Accept');
?>
Der entsprechende Thread dazu, inklusive besserer Übersicht findet sich unter:
http://www.xhtmlforum.de/viewtopic.php?t=2151#11472