[Utility.php] ブラウザがXMLをサポートしているかチェック

アフィリエイト広告を利用しています

このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です

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;
}