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パーサーのサンプル