PHP で、ユーザーエージェント(iPhone・Android・タブレット・携帯・PC)によってページを振り分ける

iPhone ・ Android ・ Windows Phone などのスマートフォンや、iPad ・ Android などのタブレット、携帯、PC によって表示するページを PHP で振り分けてみます。
振り分け処理は、htaccess や JavaScript などでも行うことができます。

[adsense1]

PHP の strpos 関数を使って、ユーザーエージェントに特定の文字列が含まれているかどうかを調べて振り分け処理を行います。
※ユーザーエージェントには、ユーザーが使用している OS やブラウザなどの情報が含まれています。
※strpos 関数は、strstr 関数や preg_match 関数よりも実行速度がはやいようです。

タブレットとスマートフォンの振り分けについて

タブレットを使っている人は、スマホサイトではなく PC サイトを見たい人も多いと思います。
iPhone と iPad は、ユーザーエージェントにそれぞれ iPhone、iPad という文字が含まれているので簡単に振り分けられるのですが、Android はスマートフォンとタブレットの両方に Android という文字が含まれているので、[Android]の文字だけではどちらの端末なのか判断がつきません。

Android のユーザーエージェントを検出する時は、是非「android」だけでなく 「mobile」という文字も検出してください。

Android のユーザーエージェントの検出について – Google ウェブマスター向け公式ブログ

ということなので、
・Android のスマートフォンの場合は、[Android] と [Mobile] の文字を検出
・Android のタブレットの場合は、[Android] の文字を検出
で振り分け処理をしたいと思います。

$ua = $_SERVER['HTTP_USER_AGENT'];

if ((strpos($ua, 'Android') !== false) && (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'iPhone') !== false) || (strpos($ua, 'Windows Phone') !== false)) {
    // スマートフォンからアクセスされた場合
    header("Location: smartphone/index.html");
    exit();

} elseif ((strpos($ua, 'Android') !== false) || (strpos($ua, 'iPad') !== false)) {
    // タブレットからアクセスされた場合
    header("Location: tablet/index.html");
    exit();

} elseif ((strpos($ua, 'DoCoMo') !== false) || (strpos($ua, 'KDDI') !== false) || (strpos($ua, 'SoftBank') !== false) || (strpos($ua, 'Vodafone') !== false) || (strpos($ua, 'J-PHONE') !== false)) {
    // 携帯からアクセスされた場合
    header("Location: mobile/index.html");
    exit();

} else {
    // その他(PC)からアクセスされた場合
    header("Location: pc/index.html");
    exit();
}

ユーザーエージェントを確認できる単純なサイトを作りました。
http://monolio.com/dev/ua/index.php

今回は、大まかにスマホ・タブレット・携帯・PC でページを振り分けましたが、携帯の機種別やブラウザ別などもっと細かく処理を振り分けることもできます。

[adsense2]

1 thought on “PHP で、ユーザーエージェント(iPhone・Android・タブレット・携帯・PC)によってページを振り分ける

  1. ピンバック: スマホからのアクセスにPCリンクを表示 | 「勇唄〜ゆうた〜」

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください