Simple Mobile and Smartphone Detection

Though an old post, this is my solution that’s been pieced together from various comments on this article.

<?php

function is_mobile(){

	$regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";
	$regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";
	$regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";	
	$regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";
	$regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";
	$regex_match.=")/i";		
	return isset($_SERVER['HTTP_X_WAP_PROFILE']) or 
	isset($_SERVER['HTTP_PROFILE']) or 
	preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));
}

/*
allow a way to force either the full or mobile versions 
of the site - use a GET parameter on requests:

include links to both versions of the site w/ the special force mode parameters, 'mobile' and 'full':

<a href="http://www.example.org/?mobile">View Mobile Site</a>
<a href="http://www.example.org/?full">View Full Site</a>

Always check for 'mobile' or 'full' parameters 
before accounting for any User-Agent conditions:
*/

if ($_GET['mobile']) {
	$is_mobile = true;
}
 
if ($_GET['full']) {
	$is_mobile = false;
}
if($is_mobile) {
	// it's a mobile browser, do something like redirect
	// header("Location: http://mobile.yoursite.com/");
} else {
	//it's not a mobile browser, so do something else 
}
?>
Snippets and tagged