PHPによる携帯対応
携帯にはそれ専用にコーディングしたページを表示した方がベターですが、XHTMLで組んだ PC版ページと共存させたい場合、PHP等を用いて処理を分岐させる必要が出てきます。
各携帯キャリアのユーザーエージェントには下記の文字列が含まれるので、これを PHPで判別し処理を分岐させる方法を下記に記載します。
DoCoMo: DoCoMo
KDDI(au/tu-ka): UP.Browser
SoftBank: J-PHONE | Vodafone | SoftBank
1. クライアントのユーザーエージェントを格納
$UserAgent = getenv('HTTP_USER_AGENT');
2-1. 携帯/PCを判別し処理を分岐
#携帯ならば次のいずれかの正規表現パターンにマッチ
#^DoCoMo|UP.Browser|^J-PHONE|^Vodafone|^SoftBank
if (preg_match('/DoCoMo|KDDI|UP.Browser|J-PHONE|Vodafone|SoftBank/i', $UserAgent)) {
#携帯
$ismobile=true;
} else {
#PC
$ismobile=false;
}
2-2. 携帯/PC毎に処理を分岐
if (preg_match('/DoCoMo/i', $UserAgent)) {
#DoCoMo
} else if (preg_match('/KDDI|UP.Browser/i', $UserAgent)) {
#KDDI
} else if (preg_match('/J-PHONE|Vodafone|SoftBank/i', $UserAgent))
#SoftBank
} else {
#PC
}
3. 携帯ならばインクルード文字列を半角に変換
#includeディレクトリにある inc_main.incファイルの中身を $mainに格納
$main = get_include_contents( $dir."include/inc_main.inc" );#utf-8に文字列をエンコード
$main = mb_convert_encoding($main, "utf-8", "auto");#全角カタカナを半角カタカナに変換
if($ismobile) $main = mb_convert_kana($main, "k", "utf-8");#全角スペースを半角スペースに変換
if($ismobile) $main = mb_convert_kana($main, "s", "utf-8");
【参考サイト】
・PHP Manual
・シンプルなUserAgentパーサーのサンプル