[Utility.php] ブラウザがXMLをサポートしているかチェック
篠原 隆司
Utility.phpに記述しておきたいfunctionを掲載していきます。
記事中【 C_ 】 で始まるコードは定数です。server_dependence.phpを参照してください。
ブラウザがXMLをサポートしているかチェック
ページをXHTMLで出力する時、
header("Content-Type: application/xhtml+xml; charset=utf-8");
このように、メディアタイプを送信するべきなのですが、インターネットエクスプローラで、上記を送信してしまうと、『ファイルのダウンロード』として扱われ、ブラウザに表示させることができません。
そこで、メディアタイプをサポートしているか判別し、header()の内容を変更します。
// 記述例 (Contoroller.php内でこのように記述する)
if (isSupportContentTypeXml()){
header("Content-Type: application/xhtml+xml; charset=utf-8");
} else { // サポートしていない場合は、とりあえず text/html にする
header("Content-Type: text/html; charset=utf-8");
}
// ブラウザがContentType Xml をサポートしていれば、trueを返す
function isSupportContentTypeXml(){
global $P_AGENT_TYPE;
if ($P_AGENT_TYPE == C_MOBILE) return true;
$ua = $_SERVER['HTTP_USER_AGENT'];
if (eregi("Opera", $ua)) return true;
if (eregi("Another_HTML-lint", $ua)) return true;
$accept = (isset($_SERVER['HTTP_ACCEPT'])
? $_SERVER['HTTP_ACCEPT'] : "");
if (ereg("application/xhtml+xml", $accept)) return true;
return false;
}