さとうさんのキロク

生活と雑記と時々ネコ

【再投稿】AndroidのUserAgentを見て機種名を取得する(仮)

Androidの機種名・端末名を取り出す正規表現とかそういうやつ。

<?php
$strUserAgent = "Mozilla/5.0 (Linux; U; Android 2.3.3; ja-jp; INFOBAR A01 Build/S6160) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1";

if (preg_match("/Android/i", $strUserAgent)) {
	if (preg_match("/Mobile/i", $strUserAgent)) {
		$strOSName = "Android Mobile";
	} else {
		$strOSName = "Android";
	}
	//Android 用の端末名称取得
	$matches = array();
	//preg_match('/\(Linux; U; Android [0-9A-Za-z\.\;\-\_\s]+; ([0-9A-Za-z\-\_ \/]+) Build\/[0-9A-Za-z\.\_]+?\)/i', $strUserAgent, $matches);
	//Androidの標準ブラウザが今後クローム化する可能性に対応するため修正 ( 2013/05/24 )
	preg_match('/Android [0-9A-Za-z\.\;\-\_\s]+; ([0-9A-Za-z\-\_ \/]+) /i', $strUserAgent, $matches);

	$strTerminalNameFull = isset($matches[1]) ? $matches[0] : "";
	$strTerminalName     = isset($matches[1]) ? $matches[1] : "";
}
?>

$strTerminalNameFull に "(Linux; U; Android 2.3.3; ja-jp; INFOBAR A01 Build/S6160)" と入る。

$strTerminalName に "INFOBAR A01" と入る。

※2013/05/24 追記
Galaxy S4の標準ブラウザがクローム化しやがりましたので対応。